引言

数据库的性能优化技术一直是个老生常谈的问题,不管是MySQL、SQL Server还是Oracle。

对于我们IT开发人员和运维人员,掌握常用的SQL 优化语句是非常必要的,它可以使你的工作变得“事半功倍”,会为你带来很多便利和节约很多时间。

接下来,我将带领你们认识以下的常用优化语句。

1. SQL语句要一致,避免出现大小写

如果让你看上面两条SQL语句,你是不是觉得它们是一样的?

但是对于数据库软件在搜索时,可就不一样了。他会认为是两句SQL语句,因此要进行两次解析,生成两段执行代码。

因此,我们程序员在开发时要注意保证相同的SQL语句在其他地方也有要完全一致,多个空格、逗号都不行。

2. 正确使用like模糊查询,避免全表扫描

对于上面的模糊查询,如like 后面的“%chicken%”,因为 chicken 前面存在了%,那么程序就得对整个表进行扫描,耗费时间,资源。所以,在非必要的情况下,请不要在关键字前面加 %。

3. where 语句中请不要出现对null的判断,这样会导致引擎放弃索引进而进行全表扫描,办法是用0来替换null。

4. 限制性使用 count(*)

以上语句中,使用count(*),就会对全表进行查询。多次一举,还降低数据库性能。

5. where 多条件查询时,将数量少的放在前面

上图中,第一条SQL语句 性别为1 的很多,先选择出sex =1的,然后再对剩下的数据根据name 字段查询,这样的效率很低。

而第二条SQL 语句 先对那么字段进行筛选,剩下的数据就变得很少了,再根据sex=1,这样效率很高,数据库执行也很快。

6. 不要一味地追求 Select *

第一句SQL语句, select * 会增加数据查询表的时间,因为它需要user 这个表中所有的数据都给你查询出来,另外查询出来的数据传递给你也是要耗费时间的。

而第二句SQL语句,则定位很精准。不必要把表中不需要的数据查询出来,效率高,执行速度快。

7. 合理使用索引,不要出现以下操作

  • 索引字段上面不要出现 where !=或者是 where >,< 等这样的操作符;
  • 索引字段上面不要出现类型转换的问题,(比如字段要求的是BOOL类型,而你传入的参数却是String类型);

上述操作会导致索引失效,进而会使数据库查询变成了 全表查询。

8. 对于SQL语句要学会拆分法

当一个SQL语句过于冗余、杂乱时,嵌套了多级查询,其实这样也会降低SQL的性能问题。对于此问题,应该懂得拆分SQL语句,用多个SQL语句完成那个复杂的嵌套的SQL语句,程序速度会变快。

9. 多使用 not exist 而非 not in

对于第二个SQL语句,使用了 not in 会对内外表都进行了全表查询,没有用到了索引; 而对于 not exist 利用到了索引,索引效率会高。

10、OR 不要想当然的就使用

对于上述两条SQL语句,表明上看两者的执行效率应该差不多。其实天壤之别,or执行的是全表查询,而 union利用的是索引查询,后者效率要高的多。

结论

从上述总结的SQL语句优化方法可以看得出来:

  • 查询的时候要尽量使用数据库引擎索引;
  • 还有就是写的查询语句条件尽量简单明了,不要冗余复杂
  • 理解各个关键词的作用,并且不要使用错误的SQL语句,反而会是累赘。

sql like 多个条件_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的相关推荐

  1. 三星oneui主屏幕费电_都 9012 年了,三星系统还「负优化」吗?

    近日,三星正式向国内 Galaxy S9 系列.Note9 系列推送了 Android 9 正式版.此次除了系统版本的重大升级外,三星还为用户带来全新设计的用户界面:One UI. 在宣传中,三星称 ...

  2. 软件oem要注意什么_化妆品OEM客户要着重注意这3个基本点,不然就吃大亏了

    作为品牌方客户,确定化妆品OEM代工后,虽然生产的一切事务由化妆品OEM工厂完成,但是仍然需要注意这3个基本点! 1. 合规性 首先,产品只有备案流程全部完成,并且通过后才能进入市场销售,正常情况下是 ...

  3. cout不明确什么意思_不计免赔险是什么意思?弄不清楚要吃大亏

    汽车保险的重要性不言而喻,很多车主在挑选保险时,被名目繁多的保险弄的晕头转向.其中有一个险种,不计免赔险,光是听名字就能很多人头疼,这个险是干嘛的?有没有用?需不需要买?不计免赔险是什么意思?弄不清楚 ...

  4. sql 一个字段在另外一个表没出现_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的...

    引言 数据库的性能优化技术一直是个老生常谈的问题,不管是MySQL.SQL Server还是Oracle. 对于我们IT开发人员和运维人员,掌握常用的SQL 优化语句是非常必要的,它可以使你的工作变得 ...

  5. sql查询前50条_您必须知道的前50条SQL查询

    sql查询前50条 In this article, we'll go over the most common SQL queries that you should know to be able ...

  6. sql distinct多个字段_数据分析|记一“道”难忘的SQL面试题...

    最近被一个简单的SQL问题吊打,强颜欢笑 好了正文开始 一问:SQL中的 group by 和 distinct 了解吗,简单介绍一下? 了解了解,"Group By"从字面意义上 ...

  7. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第一部分

    sql还原数据库备份数据库 So far, we've discussed a lot about database backup-and-restore process. The backup da ...

  8. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第二部分

    sql还原数据库备份数据库 In this article, we'll walk through, some of the refined list of SQL Server backup-and ...

  9. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第IV部分

    sql还原数据库备份数据库 In this article, we'll see the how the backup-and-restore meta-data tables store the i ...

最新文章

  1. aidl实现进程间通信
  2. GitHub上传本地代码到仓库[Windows]
  3. python画图表的库_「Python」python绘制图表
  4. MyBatis中SQL语句相关内容
  5. 华为鸿蒙电脑操作系统测试版,华为鸿蒙测试版下载 华为鸿蒙测试版电脑版下载...
  6. 音视频开发(13)---视频监控系统必须知道的一些基础知识
  7. 高斯过程回归python_scikit-learn中的多输出高斯过程回归
  8. 微信小程序:冒泡事件及其阻止
  9. 试图执行系统不支持的操作,问题
  10. TMS320F2837x + Spartan6/国产FPGA低成本高实时注塑机运动控制器软硬件设计方案
  11. 芯片工程师常用英文黑话
  12. 制作U盘启动盘 优启通
  13. 程序员的岗位路线规划,不止是编程?
  14. php自学建议_php自学提升进阶路线
  15. 如何快速画出霍夫曼树
  16. html报告致谢,论文致谢优秀范文(精选10篇)
  17. 深度解析,单片机运行原理,你知道吗?
  18. 干货分享!电子商务设计师备考学习方法
  19. 『HTMLCSS』第一个网页
  20. 融资破局 |中英美三国多层次资本市场和STO融资的比较及借鉴

热门文章

  1. 从医疗数字化转型谈何为中台
  2. 聚合,组合,继承的区别
  3. Asia Yokohama Regional Contest 2018 K题 - Sixth Sense(思维加贪心加二分)
  4. Guns 旗舰版2.1发布,更新树形表格
  5. MarkdownPad基于语法示例
  6. 【100题】第三十三 高级字符匹配(和谐系统原理)
  7. 大学一年级计算机教程视频教程,大学一年级公开课《计算机基础教程》期末试题复习.doc...
  8. SSM之Mybatis框架初步
  9. devops 开源工具链_使用开源工具构建DevOps管道的初学者指南
  10. 在Kubernetes上部署Hyperledger Fabric