Re: [SQL ] 關於Oracle索引問題
※ 引述《ling123 (@@)》之銘言:
: 有一TABLE: MM_STKREC 有2個索引,分別是STKNO+RECYM(儲區+異動年月)
這個是組合鍵的關係,條件上 單單只有STKNO 是沒有索引的效果...
我之前碰過類似的狀況
所以又重建了一個類似你範例中的STKNO的索引...
結果速度就正常了
有錯請糾正XD沒有深入研究過SQL...
: 及RECDT(進出日期)
: 使用語法1時,只會開STKNO+RECYM這個索引,但RECDT卻不會開,
: 結果速度很慢(因為此檔會儲區進出交易記錄檔,是超級大檔)
: 使用語法2時,直接開RECDT這個索引,結果速度超快
: 為什麼為什麼ㄋ ??? 照道理不是應該兩個索引都會開嗎 ?? 有人知道為什麼嗎
: 語法1:
: select a.STKNO,RECYM,a.RFMNO,a.ITEMNO,a.NSN,a.GQTY,a.TRNCTP,a.ITMLOT,a.RECDT
: from MM_STKREC a
: where a.RECDT>='10/04/2007' and a.RECDT<'10/05/2007'
: and a.STKNO='AKMS1'
語法1搜尋條件沒有同時運用到STKNO+RECYM 所以INDEX沒有效果...
如果加上一個RECYM的條件 效果應該會出來...
: 語法2:
: select a.STKNO,RECYM,a.RFMNO,a.ITEMNO,a.NSN,a.GQTY,a.TRNCTP,a.ITMLOT,a.RECDT
: from MM_STKREC a
: where a.RECDT>='10/04/2007' and a.RECDT<'10/05/2007'
: and a.STKNO>='AKMS1' AND a.STKNO<='AKMS1'
語法2因為條件中使用到RECDT的索引... 所以會很快....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.146.198
※ 編輯: slalala 來自: 61.59.146.198 (10/05 19:08)
討論串 (同標題文章)