开发者社区> sunshine.pl> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

sql 查询优化小计

简介:     好久没更博了,偷偷的抽时间写一下。     早上开始working的时候,发现一个页面加载很慢,经排查是昨天写的一条联合查询的sql导致的。于是着手优化!     首先想到的是在join的时候,减少表体积之后再进行关联,于是有了下面这种写法: (原sql) a join b on a.
+关注继续查看

    好久没更博了,偷偷的抽时间写一下。

    早上开始working的时候,发现一个页面加载很慢,经排查是昨天写的一条联合查询的sql导致的。于是着手优化!

    首先想到的是在join的时候,减少表体积之后再进行关联,于是有了下面这种写法:

     (原sql)  a join b on a.bid=b.id  =>  (新sql) a join (select id,phone from b where b.site=35) b on a.bid=b.id  

    上面是将b表进行where过滤以后再与a表进行关联,执行以后查询相对快了一点,毕竟b表体积小了,关联的时候自然就快了一点。但是,瞅着这句sql就是不太顺眼,毕竟用了子查询,虽然方便,但是感觉还是有损效率的。这个时候,就突然想起以前看到的一个博主写到的,“在使用join以后,可以在on或者where后面加上条件,sql在解析的时候,会先读取条件,再进行关联”,想到这里,就恍然大悟了,何必用子查询?直接后面在where里写条件就好了。

    另外一个方面,查询的时候,一般的会有多个表进行关联, 遵循上面的原理,我们一般把小表放后面,查完了小表再去关联大表。

    

      这里我是用的sql server ,查询的时候有个分析工具挺好用的:

    

    就这个,显示估计的执行计划,可以在这里查看sql的执行消耗。

 

    嗯,谈不上什么技术点,就是记录一下。

    

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL慢查询与优化
MySQL的慢查询,全名慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中应时间超过阈值的语句。
127 0
1 SQL查询优化
SQL语句优化 对查询进行优化,要尽量避免全表扫描。在 where 或 order by 的列上加索引。 尽量避免在 where 子语句中有 where num is null,这样不用索引,要全表扫描,可用 0 代替 null 避免在 where 中用or!=,因为要全表扫描 尽量避免在 where 中用 or,因为若一个字段有索引,一个没有,则要全表扫描 like”%abc%”,全表扫描 避免在 where 子语句中对字段进行函数操作,因为要全表扫描 使用复合索引时,必须用到该索引的第一个字段,否则索引不被使用。
1218 0
SQL优化常用方法11
用TRUNCATE替代DELETE
689 0
SQL优化常用方法13
计算记录条数
694 0
SQL优化常用方法2
访问Table的方式
787 0
SQL优化常用方法5
WHERE子句中的连接顺序.
1041 0
SQL优化常用方法8
使用DECODE函数来减少处理时间
783 0
SQL优化常用方法9
整合简单,无关联的数据库访问
908 0
SQL优化常用方法10
删除重复记录
738 0
+关注
sunshine.pl
我是默卿,是一个可爱的蓝孩子,半个ACG爱好者,生活在1.5次元,后端小萌新,喜欢各种有趣的事物。
77
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载