SQL查询慢的解决思路

前提:需要优化的sql符合oracle的高效语法规则,这里暂且不提

1.在plsql工具中通过使用F5查看sql语句的执行计划

2.如果走全表扫描,则可通过hints的方式更改CBO的扫描方式( TABLE ACCESS FULL 或者INDEX RANGE SCAN),hints 无法更改CBO的扫描方式,则需要考虑hints 的写法是否准确。

hints语法规则:/*+INDEX(表或表别名 索引名称)*/ --如果有别名的情况下不写别名则可能会导致cbo忽略该hints

3.保证每个子查询、表的查询效率

4.保证每个子查询的效率则可通过更新所涉及到对象的统计信息尝试解决,

更新统计信息语法:

analyze table table_name compute statistics; --重新收集表的统计信息

ANALYZE INDEX IDX_name ESTIMATE STATISTICS; --重新手机索引的统计信息

5.子查询的查询效率没有问题,但是hash join 的cost值太大,可以考虑更换关联条件解决,当然前提是要保证整个sql的查询逻辑正确

 

  • SQL
  • 技术

你可能感兴趣的:(Oracle)