MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供一些关于Mysql 数据库查询优化的24条优化建议,仅供参考。

Mysql 查询优化

1、使用慢查询日志,找出执行慢的查询。

2、使用 EXPLAIN 来决定查询功能是否合适。

3、经常测试你的查询,看是否需要做性能优化

性能可能会随着时间的变化而变化。

4、避免在整个表上使用count(*) ,它可能会将整个表锁住。

5、保持查询一致,这样后续类似的查询就能使用查询缓存了。

6、如果合适,用 GROUP BY 代替 DISTINCT。

7、在 WHERE、GROUP BY 和 ORDER BY 的列上加上索引。

8、保证索引简单,不要在同一列上加多个索引。

9、有时,MySQL 会选择错误的索引,这种情况使用 USE INDEX。

10、使用 SQL_MODE=STRICT 来检查问题。

11、索引字段少于5个时,UNION 操作用 LIMIT,而不是 OR。

12、使用 INSERT ON DUPLICATE KEY 或 INSERT IGNORE 来代替 UPDATE,避免 UPDATE 前需要先 SELECT。

13、使用索引字段和 ORDER BY 来代替 MAX。

14、避免使用 ORDER BY RAND()。

15、LIMIT M,N 在特定场景下会降低查询效率,有节制使用。

16、使用 UNION 来代替 WHERE 子句中的子查询。

17、对 UPDATE 来说,使用 SHARE MODE 来防止排他锁。

18、重启 MySQL 时,记得预热数据库,确保将数据加载到内存,提高查询效率。

19、使用 DROP TABLE ,然后再 CREATE TABLE ,而不是 DELETE FROM ,以删除表中所有数据。

20、最小化你要查询的数据,只获取你需要的数据,通常来说不要使用 *。

21、考虑持久连接,而不是多次建立连接,已减少资源的消耗。

22、基准查询,包括服务器的负载,有时一个简单的查询会影响其他的查询。

23、当服务器的负载增加时,使用SHOW PROCESSLIST来查看慢的/有问题的查询。

24、在存有生产环境数据副本的开发环境中,测试所有可疑的查询。

mysql数据库查询优化建议_mysql数据库查询优化的24条建议相关推荐

  1. mysql自动同步数据_MySQL数据库实现双向自动同步

    [IT168 技术]本文将探讨如何通过MySQL数据库的高级特性,实现数据库的双向自动同步,确保数据的冗余与完整性.通过以往真实的项目实战与经验,把操作实施过程全部记录下来,主要有以下几个主要内容. ...

  2. Linux的MySQL用户编程使用_MySQL数据库在linux的安装,编程与操作

    来自:http://blog.csdn.net/lxh090821/article/details/9410943 1       登录数据库 格式: MySQL -h主机地址 -u用户名 -p用户密 ...

  3. mysql数据库表分区_MySQL数据库之MySQL的分区和分表详解

    本文主要向大家介绍了MySQL数据库之MySQL的分区和分表详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1. 分区 MySQL中的分区是指将一个数据表按照某种规则(如时 ...

  4. mysql 慢查询毫秒_Mysql 慢查询优化实践

    Mysql 慢查询优化实践 目标: 提高mysql运行效率,增加并发,提高响应速度 方案: 通过阿里云给的慢查询日志excel,对耗时长,开销大的sql语句进行优化,提升访问速度服务器运行效率 实践: ...

  5. MySQL数据库sql分类_mysql数据库常用sql的分类整理

    **************************************************************************************************** ...

  6. mysql数据库物理备份_MySQL数据库之xtrabackup物理备份(一)

    (1)备份开始时会开启一个后台检测进程,实时检测mysql redo(已提交的事务)的变化,一旦发现redo中有新日志写入,立刻将日志记入后台日志文件xtrabackup_log中, (2)复制Inn ...

  7. mysql导出入数据库报错_mysql数据库导出导入数据库的搜索结果-阿里云开发者社区...

    mysql 数据库导入\导出(总结备忘) 数据库的基本导入\导出的命令 是 mysqldump 和 source 在linux下直接用命令行操作就可以 在windows下 一般情况下有两种方法一个也是 ...

  8. mysql数据库显示问号_mysql数据库中文显示问号

    mysql命令框中向表中插入中文字符,在可视化工具MySQL Workbeach或phpMyAdmin中不显示或显示乱码的问题解决 mysql命令框中向表中插入中文字符,在可视化工具MySQL Wor ...

  9. mysql 创建查询 删除_MYSQL数据库查询删除创建企业基本知识

    数据查询语言(DQL)从表中获取数据 select  + where (位置)  order by(排序)  group by  haveby 查询用户:select user,host,passwo ...

最新文章

  1. 2018牛客暑期ACM多校训练营第二场 - A题
  2. scala学习笔记-过程、lazy值和异常(6)
  3. 通过SID查找历史执行的SQL语句
  4. 爬虫提取非结构化数据
  5. Openswan企业实战之ipsec ***加速ERP系统
  6. 大屏安卓车载导航刷机包_安卓手机第三方recovery是什么意思?
  7. windows上使用image库
  8. 观察者模式在JDK应用中的源码分析
  9. 5G第一个演进版本标准完成 3GPP宣布R16标准冻结
  10. MYSQL limit 分页
  11. MySQL索引设计与EXPLAIN
  12. 怎样提取PDF文件其中一页
  13. C语言:从键盘输入一个整数,分别输出它的个位数、十位数、百位数.....
  14. 华为智能音响2代鸿蒙,99999元!华为全屋智能方案来了:鸿蒙生态是亮点
  15. Docker(9) 安装Oracle18c
  16. 鸽巢原理(初识)(纯算法)
  17. ubuntu linux 下使用google eather
  18. 大华硬盘录像机通过大华SDK接入EasyCVR,为何出现无法在线的情况?
  19. 软件项目 单元测试用例,行政培训考核系统项目单元测试用例.doc
  20. Spring——16 自动注入

热门文章

  1. 数据存储方式_视频监控系统的数据存储方式的概念及应用
  2. 七年级上册计算机工作计划,清华大学版信息技术七年级上册学期教学工作计划...
  3. java备份还原mysql数据库_Java备份还原Mysql数据库
  4. 正在锁定计算机 win7转圈圈打不开,Win7网络连接图标一直转圈的原因和解决方法...
  5. mysql 云无忧ps教程_华为云数据库MySQL一键开通读写分离,无忧应对企业业务高峰情景...
  6. linux 编译3g驱动_linux重新编译内核
  7. java 大数类_Java大数类介绍
  8. 生活中java继承例子_简单继承例子:java
  9. 错误代码0x800f0950怎么解决_解决win10安装net framework 3.5失败(错误代码 0x800F0950)...
  10. JAVA知识基础(三):修饰符