我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql进行sql优化的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql进行sql优化的方法

小编给大家分享一下mysql进行sql优化的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

mysql进行sql优化的方法:1、避免全表扫描,在where及order by涉及的列上建立索引;2、在where子句中避免对字段进行null值判断,避免使用“!=”或“<>”操作符,避免使用or来连接条件;3、慎用in和not in。

MySQL中的SQL的常见优化策略

1 避免全表扫描

对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

2 避免判断null值
应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num is null

可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

select id from t where num=0

3 避免不等值判断

应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。

4 避免使用or逻辑
应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num=10 or num=20

可以这样查询:

select id from t where num=10
union all
select id from t where num=20

5 慎用in和not in逻辑
in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t1 where num in(select id from t2 where id > 10)
此时外层查询会全表扫描,不使用索引。可以修改为:
select id from t1,(select id from t1 where id > 10)t2 where t1.id = t2.id
此时索引被使用,可以明显提升查询效率。

6 注意模糊查询
下面的查询也将导致全表扫描:
select id from t where name like '%abc%'
模糊查询如果是必要条件时,可以使用select id from t where name like 'abc%'来实现模糊查询,此时索引将被使用。如果头匹配是必要逻辑,建议使用全文搜索引擎(Elastic search、Lucene、Solr等)。

7 避免查询条件中字段计算
应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where num/2=100
应改为:
select id from t where num=100*2

8 避免查询条件中对字段进行函数操作
应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where substring(name,1,3)='abc'--name以abc开头的id
应改为:
select id from t where name like 'abc%'

9 WHERE子句“=”左边注意点
不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

10 组合索引使用
在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。

11 不要定义无异议的查询
不要写一些没有意义的查询,如需要生成一个空表结构:
select col1,col2 into #t from t where 1=0
这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样:
create table #t(...)

12 exists
很多时候用 exists 代替 in 是一个好的选择:
select num from a where num in(select num from b)
用下面的语句替换:
select num from a where exists(select 1 from b where num=a.num)

13 索引也可能失效
并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。

14 表格字段类型选择
尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
尽可能的使用 varchar 代替 char ,因为首先可变长度字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

15 查询语法中的字段
任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

16 索引无关优化
不使用*、尽量不使用union,union all等关键字、尽量不使用or关键字、尽量使用等值判断。

表连接建议不超过5个。如果超过5个,则考虑表格的设计。(互联网应用中)

表连接方式使用外联优于内联。
外连接有基础数据存在。如:A left join B,基础数据是A。  
A inner join B,没有基础数据的,先使用笛卡尔积完成全连接,在根据连接条件得到内连接结果集。

大数据量级的表格做分页查询时,如果页码数量过大,则使用子查询配合完成分页逻辑。
Select * from table limit 1000000, 10
Select * from table where id in (select pk from table limit 100000, 10)

以上是mysql进行sql优化的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql进行sql优化的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在MySQL中进行SQL优化

在MySQL中进行SQL优化的方法有很多,以下是一些常见的方法:使用索引:确保表中经常查询的列上有索引,以加快查询速度。可以使用EXPLAIN语句分析查询执行计划,查看是否在索引上进行了扫描。避免使用SELECT *:只查询需要的列,避免
如何在MySQL中进行SQL优化
2024-04-09

sql如何进行优化

如何优化 sql 查询优化 SQL 查询的步骤:1. 分析查询找出需要优化的高耗时查询。使用 EXPLAIN 命令来查看查询执行计划。识别查询中的瓶颈,例如表扫描、索引扫描或子查询。2. 优化表结构确保表的列数据类型与实际数据匹配。
sql如何进行优化
2024-06-21

MySQL中进行sql优化的情况是什么

这篇“MySQL中进行sql优化的情况是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL中进行sql优化的情况是
2023-05-25

【mysql】SQL优化15种方法

关于SQL优化15种方法 为什么进行SQL优化?1.避免使用select *2.用union all代替union3.小表驱动大表4.批量操作5.多用limit6.in中值太多7.增量查询8.高效的分页9.用连接查询代替子查询10.
2023-08-18

MySQL中什么情况下进行sql优化

这篇文章主要介绍MySQL中什么情况下进行sql优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql优化简介1、什么情况下进行sql优化性能低、执行时间太长、等待时间太长、连接查询、索引失效。2、sql语句执行过
2023-06-27

MySQL数据库的SQL语句优化方法

1、使用 show status 了解各种 SQL 的执行频率mysql> show status like "Com%";该命令可以查询 sql 命令的执行次数。2、定位执行效率较低的 SQL 语句定位执行效率较低的 SQL 一般有两种方法:通过慢查询日志定
MySQL数据库的SQL语句优化方法
2021-06-02

MySQL的SQL优化

如何获取有性能问题的sql         通过慢查询日志可以获取大部分有性能问题的SQL,但是通常对慢查询日志的分析还是有一定延迟,有些情况下还是希望实时的获取哪些SQL有性能问题,比如当前数据库服务器的压力徒增等。 slow_query_log 启用停止记
2020-01-20

编程热搜

目录