sql语句优化规律总结

sql语句优化规律总结

ID:8973576

大小:23.50 KB

页数:4页

时间:2018-04-13

sql语句优化规律总结_第1页
sql语句优化规律总结_第2页
sql语句优化规律总结_第3页
sql语句优化规律总结_第4页
资源描述:

《sql语句优化规律总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、SQL语句优化规律总结(ORACLE)1、FROM:ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表drivingtable)将被最先处理.在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表(放在where的最后)。如果有3个以上的表连接查询,那就需要选择交叉表(intersectiontable)作为基础表,交叉表是指那个被其他表所引用的表.2、WHERE:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些

2、可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。3、在where子句中使用isnull或isnotnull的语句优化器是不允许使用索引的,尽量不用。4、少使用或不使用NOT。5、如果通配符(%)在搜寻词首出现,Oracle系统不使用此列做索引。在很多情况下可能无法避免这种情况,但是一定要心中有底,通配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。在下面的查询中索引得到了使用select*fromemployeewherelast_namelike'c%';6、SELECT子句中避免使用‘*‘7、避免

3、在索引列上使用计算.如(WHERESAL>25000/12)8、任何在Orderby语句的非索引项或者有计算表达式都将降低查询速度。9、关于IN、exists和DISTINCT第一种格式是使用IN操作符:...wherecolumnin(select*from...where...);第二种格式是使用EXIST操作符:...whereexists(select'X'from...where...);第二种格式要远比第一种格式的效率高。通常来说,采用表连接(emp.depart_cod=depart.depart_code)的方式比EXISTS更

4、有效率所以:连接>exists>IN。用EXISTS替换DISTINCT当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT.一般可以考虑用EXIST替换低效:SELECTDISTINCTDEPT_NO,DEPT_NAMEFROMDEPTD,EMPEWHERED.DEPT_NO=E.DEPT_NO高效:SELECTDEPT_NO,DEPT_NAMEFROMDEPTDWHEREEXISTS(SELECT‘X’FROMEMPEWHEREE.DEPT_NO=D.DEPT_NO);10、下面的查询将强迫

5、对orders表执行顺序操作:SELECT*FROMordersWHERE(customer_num=104ANDorder_num>1001)ORorder_num=1008虽然在customer_num和order_num上建有索引,但是在上面的语句中优化器还是使用顺序存取路径扫描整个表。因为这个语句要检索的是分离的行的集合,所以应该改为如下语句:SELECT*FROMordersWHEREcustomer_num=104ANDorder_num>1001UNIONSELECT*FROMordersWHEREorder_num=1008这样

6、就能利用索引路径处理查询。11、避免相关子查询一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的列值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。12、在缺省情况下,ORACLE采用CHOOSE优化器,为了避免那些不必要的全表扫描(fulltablescan),你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。