oracle SQL查询,用大于等于不走索引,怎么解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle SQL查询,用大于等于不走索引,怎么解决相关的知识,希望对你有一定的参考价值。
参考技术A Oracle强制使用索引:select /*+ INDEX(T_MEDFLOW_INTENT,SYS_C00ADDCODE) */ count(t.addcode)
from T_MEDFLOW_INTENT t
where 1 = 1
AND (AddCode = '4401' or (1 = 1) or
addcode in (SELECT Addcode FROM UserAdd WHERE userID = '440916'))
AND smemberName like '广东%'
/*+ INDEX(T_MEDFLOW_INTENT,SYS_C00ADDCODE) */ 就是强制使用索引
INDEX(表名,索引名称)本回答被提问者和网友采纳
mysql不等于走索引吗
不一定的,在很多场景下,NOT IN、不等于两类操作使用二级索引的成本远超于全表扫描的成本,查询优化器按照成本选择"最优执行计划",导致查询不走二级索引。但不能因此就彻底判断NOT IN或<>两类操作不能走索引。 参考技术A不一定, 原因有二:
我们多数情况下使用 != 只是筛选掉少量数据, 这种情况下走索引树找出不符合条件的值然后返回其他符合条件的值, 跟直接做全表扫描的效率其实相差不大. 如果筛选掉的数据的量很大, 剩下的数据的量很少, 这种情况下有可能会走索引.
更重要的是, 多数情况下我们是会select表里的多个列, 而在二级索引树下只会有二级索引的索引值和主键值, 其他的值都要回表回到主键索引上面查, 有多少个符合条件的数据就要回表多少次, 这种查询效率简直是要比全表扫描差得多.
以上是关于oracle SQL查询,用大于等于不走索引,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章