当前位置: 首页 > article >正文

一般在写SQL时需要注意哪些问题,可以提高查询的效率?

很多人写SQL按照自己喜好,没有规则意识,这对于自主查询影响不大,你爱怎么搞就怎么搞,一旦涉及到提交任务或团队共享,就不能乱写了,会浪费资源影响到开发效率,严重的甚至会服务器瘫痪。

提几个关于SQL优化的小建议,都是细节的问题。

1、尽量不要使用select * from ...,要在后面加limit限制行数,并且选择要查询的字段

2、多使用Exists()和Join(),而非where in子查询

3、为表创建索引列,查询速度会更快

索引有很多好处,会降低数据库的IO成本,会降低分组消耗的成本,降低数据排序成本等等

看到一个索引的解释比较形象

索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?

4、筛选字段,尽量避免使用or,可以用

5、尽量不要join很多表,小心会过载,执行效率也会很低,可以将长查询拆分成多个查询,最后再连接

6、尽量不要使用select distinct,这个过程需要处理大量数据,速度会比较慢

7、如果是在公司服务器执行查询,尽量选择非高峰期查询

8、查询语言要写注释,让同事能看懂,同时也是让以后的自己能看懂

9、尽量使用UNION ALL,而不是UNION,因为后者是取交集,速度更慢

10、对于频繁使用的数据和更复杂的查询,要使用存储过程

11、建表时选择适当的数据类型,不然会造成资源浪费

12、表越大查询速度越慢,所以在连接聚合操作时,尽可能将表精简到最小

13、尽量不要使用 %前缀进行模糊前缀查询

14、在取出字段上可以使用相关函数,但是在 Where 条件中的过滤条件字段上避免使用任何函数,包括数据类型转换函数,以避免索引失效。或者可以考虑使用表达式索引功能

15、SQL代码中应用到的所有SQL关键字、保留字都需使用全大写或小写


http://www.kler.cn/news/309584.html

相关文章:

  • adb install失败: INSTALL_PARSE_FAILED_NO_CERTIFICATES
  • JavaScript高级——闭包应用-自定义js模块
  • 『功能项目』窗口可拖拽脚本【59】
  • 设置spring boot禁止日志输出到控制台
  • c++中的二叉搜索树
  • 前端网络层性能优化
  • 【2024华为杯研究生数学建模竞赛】比赛思路、代码、论文更新中.....
  • 使用 Vue 3 和 TypeScript 实现带打字效果的仿 AI 分析展示组件
  • 【C/C++语言系列】指针数组、数组指针、函数声明和函数指针区别
  • Git 中的refs
  • Python异常处理:自定义异常②
  • 智慧体育场馆:科技引领未来运动体验
  • 【C语言进阶】动态内存与柔性数组:C语言开发者必须知道的陷阱与技巧
  • JAVA学习笔记01-变量的初始化
  • Medieval Fantasy Town Village Environment for RPG FPS 中世纪城镇环境
  • 时序数据库 TDengine 的入门体验和操作记录
  • 某oa命令执行漏洞挖掘思路
  • 网络安全。
  • 数学建模笔记——动态规划
  • Vue3中集成高德地图并实现平移缩放功能
  • 如何搭建一个ip池用来做数据抓取用
  • MFC工控项目实例之十四模拟量信号名称从文件读写
  • uniapp上使用document方案之renderjs
  • 回收站数据怎么恢复?用这 5 种方法,准能恢复回收站数据!
  • 基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图
  • Pr:Adobe SRT
  • React中forwardRef()的作用?
  • python多进程程序设计 之二
  • 基于深度学习的文本引导的图像编辑
  • 【我的 PWN 学习手札】Largebin Attack(< glibc-2.30)