写SQL语句的时候我们往往关注的是SQL的执行结果,但是是否真的关注了SQL的执行效率,是否注意了SQL的写法规范?
以下的干货分享是在实际开发过程中总结的,希望对大家有所帮助!
1. limit分页优化
当偏移量特别大时,limit效率会非常低。
很快
很慢
方案一:
如果我们结合order by使用。很快,0.04秒就OK。因为使用了id主键做索引!当然,是否能够使用索引还需要根据业务逻辑来定,这里只是为了提醒大家,在分页的时候还需谨慎使用!
方案二
2.利用limit 1 、top 1 取得一行
有些业务逻辑进行查询操作时(特别是在根据某一字段DESC,取最大一笔).可以使用limit 1 或者 top 1 来终止[数据库索引]继续扫描整个表或索引。
反例
正例
3. 任何情况都不要用 select * from table ,用具体的字段列表替换"*",不要返回用不到的字段,避免全盘扫描!
4. 批量插入优化
反例
正例
sql语句的优化主要在于对索引的正确使用,而我们在开发中经常犯的错误便是对表进行全盘扫描,一来影响性能,而来耗费时间!
5.like语句的优化
反例
正例
6.where子句使用 in 或 not in 的优化
sql语句中 in 和 not in 的使用请慎用!使用in 或者 not in 会丢弃索引,从而进行全盘扫描!
方案一:between 替换 in
反例
方案二:exist 替换 in
注:关于exist和in的用法,片尾有彩蛋~
反例
正例
领取专属 10元无门槛券
私享最新 技术干货