最近开发一个需求,需要查询数据展示到界面,一开始就想着从哪些表关联起来取值,费了老半天终于把三个表关联起来,查出的数据看着还行,刚开始查询挺慢的,我就加了索引,然后查看执行计划,速度、消耗大大有所改善,就这么把代码提交了。后来到了测试环境,巨卡,完全不能用的感觉,没办法只能重新优化,将所有要的信息放到一个表中查出,新加字段去存储,以此解决查询慢的问题。
在这个查看执行计划的过程中,发现并学习了一点东西,做一下笔记:
1.加了索引,执行之后,查看执行计划并没有更新起作用,查看表的状态,还未更新。
--更新最新状态
ANALYZE TABLE 表名 COMPUTE Statistics;
2.在plsql中执行一条语句,第一次执行时间比较慢,第二…多次执行查询的时间大大减少。
主要是有缓存机制,从缓存中查询,所以这么看查询的时间是不够准确的。
可以先清理一下缓存:
-- 请数据库缓存
alter system flush shared_pool ;
alter system flush BUFFER_CACHE ;
3.查看执行计划
--执行计划
explain plan for 你的查询语句;
--然后执行下面这句就能看到执行计划了
SELECT * FROM TABLE(dbms_xplan.display());