作者slalala (ptt不是丁丁知识+)
看板Database
标题Re: [SQL ] 关於Oracle索引问题
时间Fri Oct 5 19:08:12 2007
※ 引述《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)