`

记录一次mysql 慢查询的处理

阅读更多
MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度。
MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作。
通过索引优化来实现MySQL的ORDER BY语句优化:
1、ORDER BY的索引优化。如果一个SQL语句形如:
SELECT [column1],[column2],…. FROM  ORDER BY [sort];
在[sort]这个栏位上建立索引就可以实现利用索引进行order by 优化。
2、WHERE + ORDER BY的索引优化,形如:
SELECT [column1],[column2],…. FROM  WHERE [columnX] = [value] ORDER BY [sort];
建立一个联合索引(columnX,sort)来实现order by 优化。
注意:如果columnX对应多个值,如下面语句就无法利用索引来实现order by的优化
SELECT [column1],[column2],…. FROM  WHERE [columnX] IN ([value1],[value2],…) ORDER BY[sort];
3、WHERE+ 多个字段ORDER BY
SELECT * FROM  WHERE uid=1 ORDER x,y LIMIT 0,10;
建立索引(uid,x,y)实现order by的优化,比建立(x,y,uid)索引效果要好得多。
MySQL Order By不能使用索引来优化排序的情况
* 对不同的索引键做 ORDER BY :(key1,key2分别建立索引)
SELECT * FROM t1 ORDER BY key1, key2;
* 在非连续的索引键部分上做 ORDER BY:(key_part1,key_part2建立联合索引;key2建立索引)
SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2;
* 同时使用了 ASC 和 DESC:(key_part1,key_part2建立联合索引)
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
* 用于搜索记录的索引键和做 ORDER BY 的不是同一个:(key1,key2分别建立索引)
SELECT * FROM t1 WHERE key2=constant ORDER BY key1;
* 如果在WHERE和ORDER BY的栏位上应用表达式(函数)时,则无法利用索引来实现order by的优化
SELECT * FROM t1 ORDER BY YEAR(logindate) LIMIT 0,10;


特别提示:
1>mysql一次查询只能使用一个索引。如果要对多个字段使用索引,建立复合索引。
2>在ORDER BY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。
3>mysql 目前只支持顺序排序ASC,不支持逆序排序DESC。http://dev.mysql.com/doc/refman/5.7/en/create-index.html


下面是收集的一下额查看慢查询的一些处理操作文章,详细的请参看mysql官方文档:
1. 查看数据库索引的链接: http://dev.mysql.com/doc/refman/5.7/en/show-index.html
2. linux下开启mysql慢查询,分析查询语句: http://blog.51yip.com/mysql/972.html
3. 慢查询日志的格式: http://www.php101.cn/2015/07/22/MySQL%E6%85%A2%E6%9F%A5%E8%AF%A2%E6%97%A5%E5%BF%97/
4. explain的介绍: http://www.cnblogs.com/zhanjindong/p/3439042.html
5. mysql中使用limit时,explain带来的问题分析: http://www.ahlinux.com/mysql/6434.html


来自:http://www.9usb.net/201003/mysql-suoyin-youhua-order-by.html
来自: http://blog.csdn.net/zht666/article/details/18010539
花下眠工作室
蜗牛食堂


分享到:
评论

相关推荐

    一次MySQL慢查询导致的故障

    我们知道分析MySQL语句查询性能的方法除了使用EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。 一、 起因 研发反应某台数据库僵死,后面的...

    python自动结束mysql慢查询会话的实例代码

    在现代的数据库管理与优化领域,MySQL数据库的慢查询问题一直是DBA和开发人员关注的重点。当一个数据库的查询操作响应时间过长时,称之为慢查询。慢查询可能导致服务响应延迟,影响用户体验。为了应对这一问题,本文...

    MySQL千万级大表深度分页为什么慢,以及优化的方法、原理

    - **存储过程或批量查询:** 对于深度分页,可以考虑将多次分页查询合并成一次,或者通过存储过程来优化。 - **分页优化插件:** MySQL有一些插件如`Page_Cursor`,可以优化分页查询性能。 - **数据归档:** 对于...

    处理group by 查询速度慢的问题.docx

    本文将详细记录一次针对GROUP BY查询效率低下的排查及优化过程,希望能够对读者有所帮助。 #### 问题背景 在一张名为`packet_buy_report`的数据表中,总记录数达到了17,235,162条。该表包含了多个字段,具体如下:...

    tomcat+mysql+jsp 分页查询

    通过以上步骤,你可以构建出一个基本的分页查询系统,使得用户能够方便地浏览大量数据,而不会因为一次性加载所有数据导致页面响应慢。这个项目对于初学者来说,是一个很好的实践,可以巩固对Web开发基础的理解,...

    提供MySQL负载类型、关键统计、慢查询报告等健康信息-Perl-Shell-下载

    MySQL的慢查询日志记录了执行时间超过预设阈值的查询,有助于识别和优化性能问题。通过分析这些日志,你可以找到执行时间过长的查询,然后使用EXPLAIN分析查询计划,优化SQL语句。 总结,利用Perl和Shell脚本对...

    第一次作业mysql的架构图

    MySQL 中有多种类型的日志文件,包括错误日志、通用查询日志、二进制日志、慢查询日志等。这些日志文件可以帮助管理员诊断和解决数据库的问题。 配置文件 配置文件是 MySQL 的一个重要组件,负责存放 MySQL 的所有...

    MySQL Like模糊查询速度太慢如何解决

    - 分解查询:如果可能,将复杂查询拆分为多个简单的查询,分别执行并合并结果,这可能比一次全表扫描更有效。 - 全文索引:对于全文搜索需求,MySQL提供了全文索引功能,但不是所有情况都适用,且在某些版本或配置...

    一步步打造高速mysql

    - **性能剖析**:使用工具如MySQL慢查询日志、Profiling功能等来识别和定位性能瓶颈。 - **调优策略**: - 调整MySQL配置参数,例如innodb_buffer_pool_size等。 - 定期检查并优化表结构和索引。 - 对数据库...

    高性能mysql设计实战

    《高性能MySQL(第3版)》是一本深入探讨MySQL数据库性能优化与设计实践的专业书籍,由Baron Schwartz等作者撰写。这本书旨在帮助读者理解和实施针对MySQL的高效能策略,以应对日益增长的数据处理需求。 MySQL作为...

    使用mysql时候的配置信息

    13. **慢查询次数:** 均为0,表示没有慢查询记录。 14. **打开表的数量:** 分别为12和12,反映了当前打开的表的数量。 15. **刷新表次数:** 分别为1次,表示服务器重启以来刷新表的次数。 16. **平均每秒查询次数...

    JSP+MySql分页组件

    在Web应用程序中,一次性加载所有数据可能导致页面响应慢,尤其是在数据库存储的数据量庞大的情况下。分页技术可以有效地解决这个问题,只加载用户当前需要查看的数据。 **JSP(JavaServer Pages)** 是一种动态...

    php ajax mysql 点击加载更多 分页

    这种技术可以提升用户体验,避免一次性加载所有数据导致页面加载速度慢或者浏览器卡顿。以下是对这个主题的详细解释: 1. PHP(PHP:Hypertext Preprocessor):这是一种广泛使用的开源服务器端脚本语言,特别适合...

    java和mysql的分页程序

    在Java和MySQL的世界里,分页是Web应用程序中不可或缺的一部分,尤其在处理大量数据时,分页能够提高用户体验,避免一次性加载过多数据导致页面响应慢或者内存溢出。本项目提供了一个基于Java后端和MySQL数据库的...

    1.MySQL基础篇(1~5).pdf

    MySQL是一种流行的开源关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据库管理。本文档覆盖了MySQL的基础知识点,包括其历史、架构、授权方式、性能特性、存储引擎、配置选项、日志系统、以及对...

    java jsp mysql分页(原代码)

    Java JSP MySQL分页是Web开发中常见的需求,主要用于处理大量数据时提高用户体验,避免一次性加载过多数据导致页面响应慢。在这个项目中,我们看到它使用了Java、JSP、JDBC以及MySQL来实现这一功能。下面将详细介绍...

    mysql high performance

    - **案例一:**某大型电商平台采用MySQL作为核心数据库,在经历多次双11高峰后总结出的一套完整的性能调优方案。 - **案例二:**社交应用通过引入分区表技术和读写分离策略,成功应对用户数量激增带来的挑战。 - **...

Global site tag (gtag.js) - Google Analytics