MySQL 优化慢查询
查询以SELECT 语句的形式执行数据库中的所有查找操作。调整这些语句是重中之重,无论是实现动态网页的亚秒响应时间,还是缩短数小时生成大量夜间报告的时间。
此外SELECT语句,进行查询调谐技术也适用于结构,如 CREATE TABLE...AS SELECT, INSERT INTO...SELECT和WHERE在条款 DELETE的语句。这些语句有额外的性能考虑,因为它们将写操作与面向读的查询操作结合起来。
NDB Cluster 支持 join pushdown 优化,其中合格的 join 被完整发送到 NDB Cluster 数据节点,在那里它可以分布在它们之间并并行执行。有关此优化的更多信息,请参阅 NDB 下推连接的条件。
优化查询的主要考虑因素是:
要使慢
SELECT ... WHERE查询更快,首先要检查是否可以添加 索引。在WHERE子句中使用的列上设置索引,以加快评估、过滤和结果的最终检索。为避免浪费磁盘空间,请构建一小组索引以加速应用程序中使用的许多相关查询。索引对于使用连接和 外键等功能引用不同表的查询尤其重要 。您可以使用该
EXPLAIN语句来确定哪些索引用于SELECT. 请参阅 第 8.3.1 节,“MySQL 如何使用索引”和 第 8.8.1 节,“使用 EXPLAIN 优化查询”。隔离和调整查询的任何部分,例如需要过多时间的函数调用。根据查询的结构方式,可以为结果集中的每一行调用一次函数,甚至可以为表中的每一行调用一次函数,这大大放大了任何低效率。
尽量减少 查询中的全表扫描次数 ,尤其是对于大表。
通过
ANALYZE TABLE定期使用该语句使表统计信息保持最新 ,以便优化器拥有构建高效执行计划所需的信息。了解特定于每个表的存储引擎的调优技术、索引技术和配置参数。双方
InnoDB并MyISAM有两套准则的实现和维持查询高性能。有关详细信息,请参阅第 8.5.6 节,“优化 InnoDB 查询”和 第 8.6.1 节,“优化 MyISAM 查询”。您可以
InnoDB使用第 8.5.3 节“优化 InnoDB 只读事务”中的技术优化表的 单查询事务 。避免以难以理解的方式转换查询,尤其是在优化器自动执行某些相同转换的情况下。
如果某个基本准则无法轻松解决性能问题,请通过阅读
EXPLAIN计划并调整索引、WHERE子句、连接子句等来调查特定查询的内部细节 。(当您达到一定的专业水平时,阅读EXPLAIN计划可能是您每次查询的第一步。)调整 MySQL 用于缓存的内存区域的大小和属性。通过有效使用
InnoDB缓冲池、MyISAM键缓存和 MySQL 查询缓存,重复查询运行得更快,因为结果是从内存中检索的第二次和后续时间。即使对于使用高速缓存区域快速运行的查询,您仍然可以进一步优化,以便它们需要更少的高速缓存,从而使您的应用程序更具可扩展性。可扩展性意味着您的应用程序可以处理更多并发用户、更大的请求等,而不会导致性能大幅下降。
处理锁定问题,其中查询速度可能会受到同时访问表的其他会话的影响。
MySQL 优化慢查询的更多相关文章
- MySQL——优化嵌套查询和分页查询
优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.嵌套查询写起来简单,也容易理解.但是,有时候可以被更有效率的连接(JOIN ...
- mysql优化-》查询缓存
使用MySql查询缓存(query_cache_size) 在MySql中查询缓存的原理: 其实是MySql创建了一个临时的空间叫Qcache(这个空间生成在MySql的编译器内存中),这个空间的大小 ...
- MySQL优化COUNT()查询
COUNT()聚合函数,以及如何优化使用了该函数的查询,很可能是最容易被人们误解的知识点之一 COUNT()的作用 COUNT()是一个特殊的函数,有两种非常不同的作用: 统计某个列值的数量 统计行数 ...
- MySQL优化总结-查询总条数
1.COUNT(*)和COUNT(COL) COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数 ...
- MySql优化子查询
用子查询语句来影响子查询中产生结果rows的数量和顺序. For example: SELECT * FROM t1 WHERE t1.column1 IN (SELECT column1 FROM ...
- Mysql优化--慢查询日志
Mysql 系列文章主页 =============== 默认没有开启慢查询日志功能.如果不是调优需要的话,一般不建议开启. 查看是否开启慢查询日志: SHOW VARIABLES LIKE '%sl ...
- mysql 优化之查询缓存(mysql8已经废弃这个功能)
对于缓存,一般人想到的是 redis.memcache 这些内存型的缓存. 但是实际上 mysql 也提供了缓存,mysql 里面的缓存是查询缓存,可以把我们查询过的语句缓存下来,下一次查询的时候有可 ...
- mysql优化 慢查询(一)
1.显示慢查询的一些参数的命令:show variables like '%slow%';结果如图
- mysql 优化like查询
1. like %keyword 索引失效,使用全表扫描.但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描. 2. like keyword% 索引有 ...
- MySQL优化、锁
1. MySQL优化-查看执行记录 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. 使用ex ...
随机推荐
- 为什么https要使用证书
为什么https要使用证书 什么是httpshttps不是一种新的协议,只是http的通信接口部分使用了ssl和tsl协议替代,加入了加密.证书.完整性保护的功能. 加密:共享密钥加密加密和解密公用一 ...
- 架构师必知的11种API性能优化方法
前言 接口性能优化是后端开发人员经常碰到的一道面试题,因为它是一个跟开发语言无关的公共问题. 这个问题既可以很简单,也可以相当复杂. 有时候,只需要添加一个索引就能解决. 有时候,代码需要进行重构. ...
- 2019银川区域赛BDFGHIKN题解
B.So Easy 题目大意:给你一个正方形矩阵,初始都是0,题目对这个矩阵做了许多次操作,每次操作把行+1或列+1.其中有一个元素被隐藏了,你需要找出这个被隐藏的元素并判断它在操作之后应该是多少. ...
- 高通Android分区表详解
高通Android分区表详解 Label Purpose of this partition Modem Partition for modem Fsc Cookie partition to sto ...
- ElasticSearch不区分字母大小写搜索
0.停止使用该索引的服务(避免新加了数据没备份) 1.备份filesearch索引(检查备份的索引和原索引数据条数是否一致) 1 POST http://127.0.0.1:9200/_reindex ...
- 解决方案 | 使用python中的os模块准确获取不带后缀的文件名和扩展名
1. 问题 如何使用python获取不带后缀的文件名? 2. 解决方法 如下图 import os file_name = "examp.le.pdf" file_name1_wi ...
- 推荐2款.NET开源、轻便、实用的Windows桌面启动器
Flow Launcher Flow Launcher是一款.NET开源(MIT License).免费.功能强大.方便实用的 Windows 文件搜索和应用程序启动器,能够帮助你快速查找文件.启动应 ...
- [oeasy]python0133_变量名_标识符_identifier_id_locals
变量名 回忆上次内容 上次讲了 什么是变量 变量变量 能变的量 就是变量 各种系统.游戏就是由变量所组成的 添加图片注释,不超过 140 字(可选) 声明了变量 并且 定义了变量 ...
- oeasy教您玩转python - 9 - # 换行字符
换行字符 回忆上次内容 数制可以转化 bin(n)可以把数字转化为 2进制 hex(n)可以把数字转化为 16进制 int(n)可以把数字转化为 10进制 编码和解码可以转化 encode 编码 ...
- Django model层之执行原始SQL查询
Django model层之执行原始SQL查询 by:授客 QQ:1033553122 测试环境 Win7 Django 1.11 执行原始SQL查询 Manager.raw(raw_query, ...