在表内已建有索引情况下,查询速度有时快,有时慢的问题。
数据库:Oracle,
工具:PlsqlDev
不走索引的原因通常有以下几种:
1.索引失效或丢失:当数据库中的索引被减少、删除或者失效时,查询语句就无法使用索引了。这一问题通常出现在数据表结构发生变化、数据导入或者转储时。
2.数据分布不均匀:当数据表中的数据分布不均匀时,索引对查询语句的优化作用就会受到影响。数据分布不均匀的情况通常出现在一些热点数据中,导致索引的作用变得不明显。
3.大量重复数据:当数据表中存在大量重复的数据时,索引就会失去作用,从而导致不走索引的情况。这一问题通常出现在数据表中的重复数据字段没有建立索引的情况下。
4.存在复杂的查询语句:当SQL语句过于复杂时,执行计划会变得复杂,从而影响到索引的选择和使用。
5.Oracle 优化器认为不走索引比走索引块。
--解决方法
执行表的统计收集-- 在执行中,不会影响数据库正常运行。
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname => '用户名',tabname => '表名',estimate_percent=>100,method_opt=> 'for all columns size auto',CASCADE=> TRUE,no_invalidate=> FALSE,degree=> 4);