好的應用設計是效能優異的關鍵

Karsus發表於2008-03-19

生產系統MOKP表,100多萬rowsSISN+EISNIndex

[@more@]

生產系統MOKP表,100多萬rowsSISN+EISNIndex

SISN列和EISN列都是前半段字母+後半段數字。

SQL

SELECT COUNT(*)

INTO v_CNT2

FROM MOKP

WHERE SISN <= p_DATA

AND EISN >= p_DATA

AND LENGTH(SISN) = LENGTH(p_DATA)

結果Cost=1800upconsistent gets=12000多,走INDEX_FFS

由於執行次數較多,這句便成為整個庫第二大buffer getsSQL

Tuning的任務擺在面前,我觀察了半天,Index 合適阿,又觀察了下MOKP的資料分佈:

最主要是SISN<=p_DATA<=EISN這個條件太模糊了,造成Index scan的範圍太大。然而根據SISN<=p_DATA<=EISN,又從AP人員那裡得知SISNEISN的字母段都是相等的,那不就隱含了p_DATASISN的字母段相等麼?

改一下:

SELECT COUNT(*)

INTO v_CNT2

FROM MOKP

WHERE SISN <= p_DATA

AND EISN >= p_DATA

AND LENGTH(SISN) = LENGTH(p_DATA) and SISN LIKE SUBSTR(P_DATA,1,6)||’%’;

再看結果:cost=3,consistent gets=3 ,爽快。

還是Tom的那句老話,優秀的design最重要。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10856805/viewspace-1001168/,如需轉載,請註明出處,否則將追究法律責任。

相關文章