我在查询的时候只加 where A1= XXX 非常慢,发现执行过程并没有走索引,全表扫描了。
如果where A1 =xxx AND A2=XXX 就走的索引,就很快,这什么情况呢。
必须跟索引中所有字段条件来查询才能走索引吗?
8 个解决方案
#1
列下主键索引的结构
#2
是不是建立的联合索引啊
#3
刚才跑去库里试了试,发现了问题所在,如果写的 >=,ORACLE就不走索引了,只写 = 就走的索引。
大于等于和等于看来被优化器区分开了。
大于等于和等于看来被优化器区分开了。
#4
但是还有个问题,虽然等于条件有几千条数据,大于等于可能是10万左右的。
但是全表可是有百万级的,为什么ORACLE会选择全表扫描呢。
但是全表可是有百万级的,为什么ORACLE会选择全表扫描呢。
#5
索引是适合在大量数据中选出少了数据速度才很快,如果返回的记录大于20%还是多少比例时oracle就不会走索引了。你可以参考一下我之前发过的一条帖子,和你的问题有点类似。
http://bbs.csdn.net/topics/391019419
#6
你可以试试大于等于取少量的数据,看看会不会走索引。应该是能走的
#7
大表的话,百分之几就不会使用索引了,优化器计算结果是使用索引更慢。
#8
你这自动建的就是联合索引,必须保持一致使用,才有效。
#1
列下主键索引的结构
#2
是不是建立的联合索引啊
#3
刚才跑去库里试了试,发现了问题所在,如果写的 >=,ORACLE就不走索引了,只写 = 就走的索引。
大于等于和等于看来被优化器区分开了。
大于等于和等于看来被优化器区分开了。
#4
但是还有个问题,虽然等于条件有几千条数据,大于等于可能是10万左右的。
但是全表可是有百万级的,为什么ORACLE会选择全表扫描呢。
但是全表可是有百万级的,为什么ORACLE会选择全表扫描呢。
#5
索引是适合在大量数据中选出少了数据速度才很快,如果返回的记录大于20%还是多少比例时oracle就不会走索引了。你可以参考一下我之前发过的一条帖子,和你的问题有点类似。
http://bbs.csdn.net/topics/391019419
#6
你可以试试大于等于取少量的数据,看看会不会走索引。应该是能走的
#7
大表的话,百分之几就不会使用索引了,优化器计算结果是使用索引更慢。
#8
你这自动建的就是联合索引,必须保持一致使用,才有效。