Re: [SQL ] 關於Oracle索引問題

看板Database作者 (ptt不是丁丁知識+)時間16年前 (2007/10/05 19:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《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)
文章代碼(AID): #171XiTMX (Database)
文章代碼(AID): #171XiTMX (Database)