你还在 Select * 吗?
作者:师太,老衲把持不住了 时间:2024-01-24 22:10:50
应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。
那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们也有莫大的关系。
程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。
技巧1 比较运算符能用 “=” 就不用 “<>”
“=”增加了索引的使用几率。
技巧2 明知只有一条查询结果,那请使用 “LIMIT 1”
“LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。
技巧3 为列选择合适的数据类型
能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,道理你懂的,磁盘和内存消耗越小越好嘛。
1.1 在MySql中如何定义像Java中类型的Boolean类型数据?其实,mysql中 是没有直接定义成Boolean这种数据类型,它只能 定义成 tinyint(1) ;当booean 等于1 代表true,boolean 等于2的时候代表false;
1.2 Long型数据对应MySQL数据库中 bigint 数据类型;
技巧4 将大的DELETE,UPDATE or INSERT 查询变成多个小查询
能写一个几十行、几百行的SQL语句是不是显得逼格很高?然而,为了达到更好的性能以及更好的数据控制,你可以将他们变成多个小查询。
技巧5 使用UNION ALL 代替 UNION,如果结果集允许重复的话
因为 UNION ALL 不去重,效率高于 UNION。
技巧6 为获得相同结果集的多次执行,请保持SQL语句前后一致
这样做的目的是为了充分利用查询缓冲。
比如根据地域和产品id查询产品价格,第一次使用了:
那么第二次同样的查询,请保持以上语句的一致性,比如不要将where语句里面的id和region位置调换顺序。
技巧7 尽量避免使用 “ SELECT * ”
如果不查询表中所有的列,尽量避免使用 SELECT *,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络IO开销。
技巧8 WHERE 子句里面的列尽量被索引
只是“尽量”哦,并不是说所有的列。因地制宜,根据实际情况进行调整,因为有时索引太多也会降低性能。
技巧9 JOIN 子句里面的列尽量被索引
同样只是“尽量”哦,并不是说所有的列。
技巧10 ORDER BY 的列尽量被索引
ORDER BY的列如果被索引,性能也会更好。
技巧11 使用 LIMIT 实现分页逻辑
不仅提高了性能,同时减少了不必要的数据库和应用间的网络传输。
技巧12 使用 EXPLAIN 关键字去查看执行计划
EXPLAIN 可以检查索引使用情况以及扫描的行。
其他
SQL调优方法有很多种,同样的查询结果可以有很多种不同的查询方式。其实最好的方法就是在开发环境中用最贴近真实的数据集和硬件环境进行测试,然后再发布到生产环境中。
以上所述是小编给大家介绍的MySql Select *详解整合网站的支持!
来源:https://blog.csdn.net/u011277123/article/details/88655486
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python 如何通过KNN来填充缺失值
![](https://img.aspxhome.com/file/2023/7/105247_0s.png)
Python如何快速上手? 快速掌握一门新语言的方法
Python设计模式之命令模式原理与用法实例分析
![](https://img.aspxhome.com/file/2023/4/75314_0s.png)
基于python实现学生管理系统
Javascript学习第一季 三
用Python中的__slots__缓存资源以节省内存开销的方法
![](https://img.aspxhome.com/file/2023/9/134569_0s.jpg)
python实现对列表中的元素进行倒序打印
![](https://img.aspxhome.com/file/2023/7/99327_0s.jpg)
图片自动更新(说明)
如何利用Python将html转为pdf、word文件
![](https://img.aspxhome.com/file/2023/5/76085_0s.png)
Python学习之Django的管理界面代码示例
![](https://img.aspxhome.com/file/2023/2/98992_0s.png)
Golang实现简易的rpc调用
![](https://img.aspxhome.com/file/2023/9/134199_0s.png)
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Python完全识别验证码自动登录实例详解
Python中DataFrame判断两列数据是否相等的方法
mysql字符串格式化方式
![](https://img.aspxhome.com/file/2023/3/122903_0s.png)
细化解析:MySQL+Webmin轻松创建数据库
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Python调用VBA实现保留原始样式的表格合并方法
![](https://img.aspxhome.com/file/2023/9/135159_0s.png)