select * from ipinfo where startip < ip and endip > ip建组合索引 (startip,endip)后,查询走索引且 cost cardinality bytes 都正常但 执行 dbms_stats后
exec dbms_stats.gather_table_stats(ownname => 'user',tabname => 'ipinfo',method_opt => 'for all indexed columns',cascade => true);非但不走索引, cardinality bytes 都 异常的大求原因 和 恢复方法 谢谢!
exec dbms_stats.gather_table_stats(ownname => 'user',tabname => 'ipinfo',method_opt => 'for all indexed columns',cascade => true);非但不走索引, cardinality bytes 都 异常的大求原因 和 恢复方法 谢谢!
在有stats的状态下,用hint指定走index的执行计划也贴出来。
但执行时间仍然很长.......无stats计划
SELECT STATEMENT, GOAL = ALL_ROWS Cost=4 Cardinality=2 Bytes=214
TABLE ACCESS BY INDEX ROWID Cost=4 Cardinality=2 Bytes=214
INDEX RANGE SCAN Cost=3 Cardinality=1 有stats计划
SELECT STATEMENT, GOAL = ALL_ROWS Cost=44 Cardinality=7242 Bytes=202776
TABLE ACCESS FULL Cost=44 Cardinality=7242 Bytes=202776
执行时间大约 有stats比无stats 快 3倍
原来如此...
请问 如果我确定 此 SQL语句 必定只返回一条记录(即 startip 跟 endip 都可以加 唯一索引)请问 这句SQL 能 优化吗? 存储过程大部分时间都耗在这句上面了......