Mysql,再见吧,select * !
作者:AIOps
应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。
那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们也有莫大的关系。
程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。
技巧1 比较运算符能用 “=”就不用“<>”
“=”增加了索引的使用几率。
技巧2 明知只有一条查询结果,那请使用 “LIMIT 1”
“LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。
技巧3 为列选择合适的数据类型
能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,道理你懂的,磁盘和内存消耗越小越好嘛。
技巧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调优方法有很多种,同样的查询结果可以有很多种不同的查询方式。其实最好的方法就是在开发环境中用最贴近真实的数据集和硬件环境进行测试,然后再发布到生产环境中。
精 彩 文 章
疫情期间用掉了1400亿个!二维码会被人类扫完吗?
比OCR更强大的PPT图片一键转文档重建技术
程序员写了一款手游,挣了2000块,全公司被抓!
END
最后说个题外话,相信大家都知道视频号了,随着灰度范围扩大,越来越多的小伙伴都开通了视频号。小詹也开通了一个视频号,会分享互联网那些事、读书心得与副业经验,欢迎扫码关注,和小詹一起向上生长!「没有开通发布权限的尽量多互动,提升活跃度可以更快开通哦」
Mysql,再见吧,select * !相关推荐
- MySQL入门 (二) : SELECT 基础查询
1 查询资料前的基本概念 1.1 表格.纪录与栏位 表格是资料库储存资料的基本元件,它是由一些栏位组合而成的,储存在表格中的每一笔纪录就拥有这些栏位的资料. 以储存城市资料的表格「city」来说,设计 ...
- 学习MySQL:使用SELECT语句从MySQL服务器查询数据
In this series of articles, we are going to learn about the basics of the MySQL database server. In ...
- mysql select string,MySql查询在select中用空stringreplaceNULL
MySql查询在select中用空stringreplaceNULL 你如何用空stringreplaceselect中的NULL值? 输出"NULL"值看起来不太专业. 这是非常 ...
- mysql用update select批量处理数据
mysql用update select批量处理数据 接手了一个项目,在实际的使用中发现服务器的负载很高! 于是在服务器上使用 Top 命令查看CPU和内存的使用情况,发现mysql占用的CPU最高.于 ...
- MySQL报错 SELECT list is not in GROUP BY clause and contains nonaggregated column...
MySQL报错 SELECT list is not in GROUP BY clause and contains nonaggregated column- 原因: 在mysql5.7以上的版本中 ...
- Mysql insert into + select 插入语句
Mysql insert into + select 插入语句 语法结构 INSERT INTO 表名 (字段1, 字段2....) SELECT字段1,字段2.... FROM表名称 WHERE条件 ...
- Mysql中update select更新数据,insert ignore into
在mysql中一般更新我们都是通过 update set指定的值,但是有些时候,我们数据库中存在一些记录,这时候我们希望用已有数据库中的记录来进行更新,这时候我们可以通过mysql的update se ...
- 再见了 SELECT * !大厂的 MySQL 查询优化方案,确实牛逼!
Java研发工程师必备技能非MySQL莫属,虽说易学好上手,但应对大厂面试,最容易遭遇滑铁卢.功败垂成的也是它. 上手简单,玩转难,才是这款开源数据库叱咤业界多年的真实写照. MySQL 8.0正式版 ...
- 再见了 SELECT *!大厂的 MySQL 查询优化方案,确实牛逼!
Java 研发工程师必备技能非 MySQL 莫属,虽说易学好上手,但应对大厂面试,最容易遭遇滑铁卢.功败垂成的也是它. 上手简单,玩转难,才是这款开源数据库叱咤业界多年的真实写照. MySQL 8.0 ...
- MySQL基础之select基本查询
DQL语言基本查询 一.基本的select语句 1.查询常量 2.从表中查数据 3.使用列的别名查询 4.去重 5.空值NULL参与运算 6.过滤数据 二. 运算符 1.算术运算符 2.比较运算符 3 ...
最新文章
- codeforces685B
- 神秘围棋AI“神之一手”:5秒一步令日本高手叹服
- 如何取消 DiscuzX 帖子被系统自动隐?
- 普通程序员,光靠GitHub打赏就年入70万,要不你也试试
- linux php项目启动_Linux上实现Node.js项目自启动
- Intel缓存控制相关的寄存器
- 每日英语:Is austerity good for your health?
- Hadoop启动脚本概览
- ToolStripStatusRollingLabel——滚动显示状态栏标签
- IOS 本地图片加载
- VMware 中 vCPU 如何分配能得到性能最优化?
- 【HarmonyOS HiSpark IPC DIY Camera试用连载2 】一天内极速完成从开箱编译烧写到跑通hello world
- 背离 - MBA智库百科
- 小程序分包Error: 分包大小超过限制,main package source
- 华为遭到英国政府调查。网友: 全世界都在针对华为!
- 实验6 实现数据完整性
- C++工资管理系统[2022-12-28]
- mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的。 . .
- 3.Spring Boot使用Apache Curator实现leader选举「第四章 ZooKeeper Curator应用场景实战」「架构之路ZooKeeper理论和实战」
- 数据库SQL优化大总结
热门文章
- CSS五种水平居中:text-align margin incline-block flex relative
- PHP中的urlencode和urldecode
- PHP递归复制文件夹的类
- MySQL性能优化点记录
- android studio 代码缩略图,android studio 设置模板
- c++ cout头文件_C/C++知识分享:C++常用内置函数你会几个,使用过几次呢?
- php+linux+线程安全,PHP 线程安全与非线程安全版本的区别深入解析
- python中的string模块_有没有可能模仿Python中的string模块?
- android打开网址重启后也是这个网站,千万不要乱试!iPhone只要打开这个「网址」立即崩溃重启!...
- 服务器输入字符在客户端显示,管理 Unicode 服务器与非 Unicode 客户端之间的数据转换...