Oracle常用技巧记录

一、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('第一步')||'%';

三、。。。。。

待补充。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章