当前位置:Gxlcms > 数据库问题 > SQL优化

SQL优化

时间:2021-07-01 10:21:17 帮助过:28人阅读

最近在做一个项目的时候,要连接几张表,筛选出一堆数据出来,但是写了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   

人气教程排行