sql语句执行顺序及简单优化

SQL的执行顺序

(1)from    (表关联,是从后往前、从右到左解析的 ) 所以尽量把数据量大的表放在最右边来进行关联
(3) join   

     多表连接时,使用表的别名并把别名前缀于每个Column上。可以减少解析的时间并减少那些由Column 歧义引起的语法错误.
(2) on     需要从哪个数据表检索数据 
(4) where   过滤表中数据的条件  (解析顺序是自下而上、从右到左 )所以把能筛选出大量数据的条件放在where语句的最下面
(5)group by(开始使用select中的别名,后面的语句中都可以使用)  如何将上面过滤出的数据分组   (执行顺序从左往右分组

           1、 如果应用了group by,那么后面的所有步骤都只能得到group by后的列或者是聚合函数(count、sum、avg等)。原因在于最终的结果集中只为每个组包含一行。这一点请牢记。 

          2、提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。即在GROUP BY前使用WHERE来过虑,而尽量避免GROUP BY后再HAVING过滤


(6) avg,sum....  聚合函数
(7)having  对上面已经分组的数据进行过滤的条件(很耗资源,尽量少用)  

     避免使用HAVING 子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作.


(8) select  查看结果集中的哪个列,或列的计算结果 (少用*号,尽量取字段名称

在解析的过程中, 会将依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 使用列名意味着将减少消耗时间。

sql 语句用大写的;因为 oracle 总是先解析 sql 语句,把小写的字母转换成大写的再执行

(9) distinct 
(10) order by 按照什么样的顺序来查看返回的数据 (执行顺序为从左到右排序,很耗资源

猜你喜欢

转载自blog.csdn.net/weixin_41624046/article/details/84787736