码迷,mamicode.com
首页 > 数据库 > 详细

SQL优化

时间:2016-10-27 15:13:33      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:rollup   rom   软件   rac   sql优化   简单   cat   筛选条件   specific   

最近在做一个项目的时候,要连接几张表,筛选出一堆数据出来,但是写了SQL之后,查询效率很不理想,于是详细看了下SQL查询语句的原理:

一、查询的逻辑执行顺序
  (1) FROM left_table
  (3) join_type JOIN right_table (2) ON join_condition
  (4) WHERE where_condition
  (5) GROUP BY group_by_list
  (6) WITH {cube | rollup}
  (7) HAVING having_condition
  (8) SELECT (9) DISTINCT (11) top_specification select_list
  (9) ORDER BY order_by_list

二:知道当前是ORACLE数据库还是MYSQL数据库,因为不同的数据库在解析代码顺序上有些差异,oracle是从下向上,从右往左的执行顺序,因此:

     (1)在使用where筛选条件时,倾向于将筛选数据量大的条件放在最后;

     (2)在使用内连接表的时候,通常会使用最右边的表当作驱动表;如果是外连接,比如左连接或者是右连接,应该对应左右表来当驱动表;

     (3)尽量不用嵌套查询,就像嵌套for循环一样,那样查的数据次数会爆炸的;

     (4)合理选择使用in或者exists,外表数据量大,内表数据量小建议用in或者not in;外表数据量小,内表数据量大,建议用not exists或者exists;

     (5)还有一些简单的优化就不说了,都是一些常识吧;

三:在确定这些都用的情况下,效率还是很低,可以尝试使用索引或者是这样:

   查询当前的执行计划,看下软件本身是从哪里开始执行的,然后适当修改顺序和查询方式来优化;

 

总结:这篇博客写的很,没新意,但是作为新手,我希望通过多看点,写点东西,让自己学会成长,学会不再偷懒的只是当时的看下就过去了;

SQL优化

标签:rollup   rom   软件   rac   sql优化   简单   cat   筛选条件   specific   

原文地址:http://www.cnblogs.com/pingguoyaoleyikou/p/6003985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!