前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​mysql优化总结

​mysql优化总结

作者头像
用户9914333
发布2022-07-21 19:56:37
3080
发布2022-07-21 19:56:37
举报
文章被收录于专栏:bug收集

bug收集:专门解决与收集bug的网站

网址:www.bugshouji.com

mysql查询语句优化分享,不同的关键字的效率哪个更高?

01

JOIN 代替子查询NOT IN

NOT IN 的使用

代码语言:javascript
复制
DELETE FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
代码语言:javascript
复制
SELECT * FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

使用JOIN替代

代码语言:javascript
复制
SELECT * FROM customerinfo
LEFT JOIN salesinfo ON customerinfo.CustomerID=salesinfo.
CustomerID
WHERE salesinfo.CustomerID IS NULL

02

数据处理放在运算符右边

代码语言:javascript
复制
SELECT * FROM order
 WHERE YEAR(OrderDate)<2001;
SELECT * FROM order
 WHERE OrderDate<"2001-01-01";
代码语言:javascript
复制
SELECT * FROM inventory
WHERE Amount/7<24;
SELECT * FROM inventory
WHERE Amount<24*7;

上面的两个查询也是返回相同的结果,但后面的查询将比前面的一个快很多

03

Like关键字与通配符的使用

在搜索字符型字段时,我们有时会使用 LIKE 关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的。例如下面的查询将会比较表中的每一条记录

代码语言:javascript
复制
SELECT * FROM books
WHERE name like "MySQL%"

但是如果换用下面的查询,返回的结果一样,但速度就要快上很多..

代码语言:javascript
复制
SELECT * FROM books
WHERE name>="MySQL"and name<"MySQM"

最后,应该注意避免在查询中让MySQL进行自动类型转换,因为转换过程也会使索引变得不起作用

04

其它

1. 用 not exists 代替not in

2. 得到行数 用count(1) 代替 count(*) OK

3. 当只需要少数字段时,用具体的字段,代替 select *

4. 想得到用户条数时,用count(1) 代替select 出结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档