一、Oracle执行计划的使用
当一段查询sql执行特别慢的时候,需要对其进行优化,此时借助PLSQL DEVELOPER工具,查看sql的执行计划,所有问题一目了然。这里只是举个简单的例子,如何读懂执行计划,可以参考博文:
https://www.cnblogs.com/xqzt/p/4467867.html
https://blog.csdn.net/xybelieve1990/article/details/50562963
1.1方式一
如何进入执行计划的页面?可以选中要执行的sql,然后单击工具栏上的按钮(如下图),也可以选中要执行的sql,按F5。
数据准备:表order_detail_info,该表中约有40万测试数据,其中列register_id是有索引的。然后演示一下,执行以下sql,进入解释计划窗口页面。
select * from order_detail_info o2 where o2.register_id like '%577094'
Table_access_full代表全表扫描。通过执行计划的描述和耗时,可以分析得知like‘%_’的查询条件使register_id的索引失效,所以耗费资源较大。再来比较一下使用到索引的执行计划情况。
select * from order_detail_info o2 where o2.register_id='437577094';
index_range_scan:索引范围扫描。通过描述和耗费可知,该查询是使用到了索引,耗费资源少了很多。
1.2方式二
也可以通过sql语句的方式查看执行计划,语法为:
explain plan for 要执行的sql;
select * from table(DBMS_XPLAN.display);
还是采用先前的sql进行测试,在sql窗口执行以下sql,可以在输出窗口看到执行计划。
explain plan for select * from order_detail_info o2 where o2.register_id like '%577094';
select * from table(DBMS_XPLAN.display);
同样有索引的sql执行计划如下,可以对比查看:
explain plan for select * from order_detail_info o2 where o2.register_id='437577094';
select * from table(DBMS_XPLAN.display);
二、根据关键字搜索相关存储过程的sql写法
SELECT * FROM ALL_SOURCE where TYPE='PROCEDURE' AND TEXT LIKE '%'||upper('第一步')||'%';
三、。。。。。
待补充。。。。