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

SQL的执行顺序

(1)from    (表关联,是从后往前、从右到左解析的 ) 所以尽量把数据量大的表放在最左边来进行关联
(2) on     需要从哪个数据表检索数据 

(3) join   多表连接时,使用表的别名并把别名前缀于每个Column上。可以减少解析的时间并减少那些由Column 歧义引起的语法错误.

(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 按照什么样的顺序来查看返回的数据 (执行顺序为从左到右排序,很耗资源

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值