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

优化MySQL的技巧有哪些

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

优化MySQL的技巧有哪些

这篇文章主要介绍优化MySQL的技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

SQL执行慢的原因

  1. 网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等硬件问题

  2. 没有索引或者索引失效

  3. 数据表里的数据记录过多

  4. 服务器调优及各个参数设置也可能会影响

  5. 开发者编写的SQL效率

  6. 其他

1、EXPLAIN分析你的SELECT查询

很多情况下,使用EXPLAIN关键字可以让你知道MySQL是如何处理你的SQL语句的,这可以帮你分析你的查询语句,从而或许能尽快的找到优化方法以及潜在的性能问题。具体EXPLAIN的使用以及各个参数的含义,请查阅相关文档即可。

2、SELECT查询必须指明字段名

SELECT * 的查询会加很多不必要的消耗(例如CPU、I/O等),同时,也有可能增加了使用覆盖索引。所以SELECT查询时,要求直接在后面指明需要查询的对应字段名。

3、查询一条数据的时候,使用 LIMIT 1

减少多余的查询,因为指定limit 1后,查询到一条数据就不再继续查询了,使得EXPLAIN中type列达到const类型,查询语句更优。

4、为搜索的WHERE字段建立索引

一般,每个表我们都会设置一个主键,而索引并不一定就是给主键。如果在你的表中,有某个字段你总要会经常用来做WHERE查询搜索,而且是读大于写的,那么,请为其建立索引吧,有兴趣了解更多建立索引的的原则,可以查阅相关资料。

5、千万不要使用 ORDER BY RAND()

如果你想随机取数据,也许第一个直接会告诉你,用随机数取,切记,这个时候你必须控制你的大脑在这个方向继续想下去,赶紧停止这种可怕的想法。因为这种查询,对数据库的性能毫无益处(消耗CPU)。更好的方案之一是先找到数据所在的条数N,然后再用LIMIT N, 1这样查询。

6、保证每张表都有一个主键ID

我们应该养成一种习惯,每设计新建一张表的时候,都应该为其设计一个ID字段,并让其成为主键,而且最好是INT型(也有使用UUID的),同时设置这个ID字段为自增(AUTO_INCREMENT)的标志。

8、尽可能的使用 NOT NULL

不要以为NULL不需要空间,事实是NULL也需要额外的空间,也许,很多有没注意但是遇到过,NULL字段在进行查询比较的时候,是比较麻烦的。当然了,如果你实在是必须需要NULL的话,那没辙,就使用吧,否则的话,就建议使用NOT NULL吧。

8、选择合适的存储引擎

在MySQL中有MyISAM和InnoDB两种存储引擎,两者各有利弊,所以我们需要了解两者的差异然后来做出最合适的选择,例如InnoDB支持事务而MyISAM不支持,MyISAM查询比InnoDB快等等;总之,如果你不知道选择什么的话,那就用InnoDB吧。

9、把IP地址存为UNSIGNED INT

在遇到需要存储IP地址的时候,很多人的第一想法都会是存储VARCHAR(15)字符串类型的,而不会想到要用INT整型来存储;如果你用整型来存储,只需要4个字节,并且你可以有定长的字段,而且这会为你带来查询上的优势。

10、尽量不要在WHERE查询时对字段进行null值判断

我们都知道,档我们对一个字段进行null的判断时候,会比较慢的,这是因为这个判断会导致引擎放弃使用所有已有的索引而进行全表扫描搜索。

11、尽量不要使用%前缀的LIKE模糊查询

模糊查询,在日常开发中,我们都会经常遇到,但是我相信很多人都是直接 LIKE '%key_word%' 或者 LIKE '%key_word' 这样搜索的,这两种搜索方式,都会导致索引失效从而进行全表扫描搜索。如果解决上面的这种模糊查询呢,答案就是使用“使用全文索引”,具体的用法有兴趣的可以自己查资料一波。

12、避免在WHERE查询时对字段进行表达式操作

例如查询语句SELECT id FROM table WHERE num * 2 = 50;,这样的查询,对字段num做了一个乘2的算数操作,就会导致索引失效。

14、减少不必要的排序

排序操作会消耗较多的CPU资源,所以减少不必要的排序可以在缓存命中率高等I/O足够的情况下,会降低SQL的响应时间。

14、建议用JOIN代替子查询

有的人会说,JOIN的性能其实也并不是很好呀,但是和子查询比起来还是有很大的性能优势的。具体的,可以了解一下子查询的执行计划相关的问题。

15、避免发生隐式类型转换

类型转换主要是指在WHERE子句中出现字段的类型和传入的参数类型不一致的时候发生的类型转换;这是因为如果我们传入的数据类型和字段类型不一致,MySQL可能会对我们传的数据进行类型转换操作,也可能不进行处理而直接交由存储引擎去处理,这样一来,就可能会出现索引无法使用的情况而造成执行计划问题。

16、避免多表查询字段类型不一致

在遇到需要多表联合查询的时候,我们设计表结构的时候,尽量保持表与表的关联字段一致,并且都要设置索引。同时,多表连接查询时,尽量把结果集小的表作为驱动表。

17、建议开启查询缓存

大多数的MySQL服务器都开启了查询缓存,这是提高性能最有效的方法之一,因为查询缓存由MySQL数据库引擎自动处理,当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表,而直接访问缓存结果了。

18、使用UNION代替临时表

UNION查询可以把两条或更多的SELECT查询结果合并到一个查询中,从而不再需要创建临时表来完成。需要注意的是,使用UNION的所有SELECT语句中的字段数目要相同。

19、慎用IN查询

IN以及NOT IN查询都要慎重,因为可能会导致全表扫描,而对于连续的数值,能用BETWEEN就不要用IN了。

以上是“优化MySQL的技巧有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

免责声明:

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

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

优化MySQL的技巧有哪些

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

下载Word文档

猜你喜欢

mysql join优化的技巧有哪些

优化MySQL JOIN操作可以提高查询性能,以下是一些常见的优化技巧:1. 使用合适的索引:确保参与JOIN的列都有合适的索引,这样可以加快连接操作的速度。可以使用EXPLAIN语句来分析查询计划,查看是否使用了索引。2. 尽量避免在JO
2023-10-23

mysql sql优化的技巧有哪些

以下是一些MySQL SQL优化的常见技巧:使用索引:为频繁使用的列创建索引,以提高查询性能。可以使用EXPLAIN语句来分析查询语句是否使用了索引。优化查询语句:避免使用SELECT *,只选择所需的列。尽量避免使用子查询,可以使用JO
mysql sql优化的技巧有哪些
2024-04-09

Mysql索引优化技巧有哪些

Mysql索引优化的一些技巧包括:使用合适的数据类型:选择合适的数据类型来存储数据,避免使用过大或者不必要的数据类型,能够减小索引的大小,提高查询性能。设计合适的索引:根据查询需求和表的结构设计合适的索引,通常可以使用主键索引、唯一索引、组
Mysql索引优化技巧有哪些
2023-10-28

MySQL查询优化技巧有哪些

使用索引:确保数据库表的字段都有合适的索引,这样可以加快查询的速度。避免查询所有字段:只选择需要的字段进行查询,避免查询过多无用字段。使用JOIN语句:合理使用JOIN语句可以减少查询次数,提高查询效率。避免使用SELECT :尽量避免使用
MySQL查询优化技巧有哪些
2024-04-09

Java 状态优化的技巧有哪些?(Java状态优化有哪些技巧)

在Java编程中,状态优化是提高程序性能和响应速度的关键。以下是一些常见的Java状态优化技巧:一、合理使用缓存缓存是一种常用的优化技术,它可以将经常访问的数据存储在内存中,以减少对磁盘或数据库的访问次数。在Java
Java 状态优化的技巧有哪些?(Java状态优化有哪些技巧)
Java2024-12-22

css的优化技巧有哪些

这篇文章主要介绍“css的优化技巧有哪些”,在日常操作中,相信很多人在css的优化技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css的优化技巧有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
2023-06-08

mysql排序分页优化的技巧有哪些

以下是一些优化MySQL排序和分页的技巧:1. 使用索引:在排序和分页查询中,合适的索引可以大大提高查询性能。确保在排序和分页的列上添加索引。2. 使用覆盖索引:如果查询只需要从索引中获取数据而不需要访问表中的其他列,可以使用覆盖索引来提高
2023-10-23

Linux系统中MySQL优化技巧有哪些

今天小编给大家分享一下Linux系统中MySQL优化技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.禁止操作系统
2023-06-28

MyBatis的SQL优化技巧有哪些

使用索引:在数据库表中创建索引可以大大提高查询性能。在编写SQL语句时,尽量使用索引列作为查询条件。避免使用通配符查询:尽量避免使用通配符查询(比如LIKE ‘%keyword%’),因为这种查询方式无法利用索引,会导致全表扫描,影响性能。
MyBatis的SQL优化技巧有哪些
2024-05-08

oracle sql优化的技巧有哪些

以下是一些Oracle SQL优化的技巧:使用索引:确保在常用的查询列上创建索引,以加快查询速度。可以使用EXPLAIN PLAN语句来查看查询计划,确定是否使用了索引。避免全表扫描:尽量避免使用不带WHERE条件的SELECT语句,因为
oracle sql优化的技巧有哪些
2024-04-09

编程热搜

目录