最初由 biti_rainy 发布 [B]select rownum rno,rowid /*+ INDEX(cstmonilog index2 ) */ rid from 还要注意在这一层的where条件中的所有字段都包含在索引中! 这是什么意思,表示所有字段和rowid都从索引里面来,而不用进行表扫描 通过索引确定了你要选取的记录的位置 然后再通过rowid去扫描表 因索引中只包含部分字段,内层使用的内存就少了 因为进行表扫描的时候不管你选取所有字段还是一个字段,都是把所有列读进内存的! [/B]
使用道具 举报
最初由 biti_rainy 发布 [B]但事实上 我并没有说他是最好的 因为确实存在一个问题我无法确信: 那就是你order by 的是时间,但where中却没有时间字段 这样让我在考虑这个问题的时候陷入两难境地 如果是我处理这个我问题,我会在索引上做各种组合来测试以确定各种方案中最好的 因为如果排序字段上没有索引,那也将是一件很痛苦的事情 并且我现在不确信能否很好的解决排序与where中的索引字段的矛盾 [/B]
最初由 biti_rainy 发布 [B]因为一个查询中,在一个表中,oracle将只选择一个索引 不知道在9i中由于跳跃式扫描的索引的特性的存在 会否解决你的这个问题 [/B]
最初由 jimmylee 发布 [B] 但是我测试的结果,用index1(moni_time)的结果比index2更快。 [/B]
本版积分规则 发表回复 回帖后跳转到最后一页