oracle数据库sql执行慢,走错索引

问题描述

最近在进行压测项目时发现压测结果很不理想,并发100的情况下响应时间达到2秒多,这对于需求来说是不能接受的,通过分析日志发现有两个表的select语句耗时很高,100-500ms之间,但是sql就是简单的根据主键字段去查询,将sql拿出直接在plsql中执行还是很慢。

问题分析

在生产环境执行同样的sql耗时在几十毫秒,差距明显,切生产数据量级远超压测环境数据。继而重建了几个表的索引还是很慢,这么简单的sql没想过分析执行计划,看了一眼执行计划发现查询走的索引不对,没有走主键索引,走了另外的一个普通索引,问题锁定。

问题解决

接触oracle数据库时间不长,网上搜了下资料,有些说的过深不是很理解,试着分析了表:

analyze table tablename compute statistics

查询时间明显提高,看执行计划是走了主键索引,问题解决。

问题总结

关于表分析与索引分析可参考这篇文章:Oracle-表分析和索引分析解读。

查询慢两大招:创建索引与表分析。

你可能感兴趣的:(oracle)