SQL语句编写优化和基本原理总结
共享SQL语句
为不重复解析相同的SQL,在第一次解析后,ORACLE将会把SQL语句存放在内存中(SGA的共享池中),以在下次执行同样的SQL时直接获得解析后的SQL及最好的执行路径。
注意:ORACLE只对单表提供高速缓冲,不适用于多表连接查询。
共享语句必须满足3个条件:
1、字符级的比较
如:select * from wl_trade; 和 select * from wl_trade; 不同
2、两个语句所指的对象必须完全相同
3、两个SQL语句中比如使用相同的名字的绑定变量。
(赋值相同也不行)
用户 对象名 访问类型
lpwl lp_trade private synonym
lp_product public synonym
lpoc lp_trade private synonym
lp_product public synonym
按照表记录数: 大 -> 小
表书写顺序: 左 -> 右
因为表间连接时,最右边的表会被放到嵌套循环的最外层。最外层循环越少,效率越高。