mysql索引优化问题
来源:互联网 发布:银行笔试 备考 知乎 编辑:程序博客网 时间:2024/05/17 22:27
1 Mysql中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)
2 当客户端向MySQL 请求一条Query,命令解析器模块完成请求分类,区别出是 SELECT 并转发给MySQL Query Optimizer时,MySQL Query Optimizer 首先会对整条Query进行优化,处理掉一些常量表达式的预算,直接换算成常量值。并对 Query 中的查询条件进行简化和转换,如去掉一些无用或显而易见的条件、结构调整等。然后分析 Query 中的 Hint 信息(如果有),看显示Hint信息是否可以完全确定该Query 的执行计划。如果没有 Hint 或Hint 信息还不足以完全确定执行计划,则会读取所涉及对象的统计信息,根据 Query 进行写相应的计算分析,然后再得出最后的执行计划。
3 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈
4 mysql的索引
存储的值按索引列中的顺序排列
可以利用B-Tree索引进行全关键字、关键字范围和关键字前缀查询,当然,如果想使用索引,你必须保证按索引的最左边前缀(leftmost prefix of the index)来进行查询。
(1)匹配全值(Match the full value):对索引中的所有列都指定具体的值。例如,上图中索引可以帮助你查找出生于1960-01-01的Cuba Allen。
(2)匹配最左前缀(Match a leftmost prefix):你可以利用索引查找last name为Allen的人,仅仅使用索引中的第1列。
(3)匹配列前缀(Match a column prefix):例如,你可以利用索引查找last name以J开始的人,这仅仅使用索引中的第1列。
(4)匹配值的范围查询(Match a range of values):可以利用索引查找last name在Allen和Barrymore之间的人,仅仅使用索引中第1列。
(5)匹配部分精确而其它部分进行范围匹配(Match one part exactly and match a range on another part):可以利用索引查找last name为Allen,而first name以字母K开始的人。
(6)仅对索引进行查询(Index-only queries):如果查询的列都位于索引中,则不需要读取元组的值。
由于B-树中的节点都是顺序存储的,所以可以利用索引进行查找(找某些值),也可以对查询结果进行ORDER BY。当然,使用B-tree索引有以下一些限制:
(1) 查询必须从索引的最左边的列开始。关于这点已经提了很多遍了。例如你不能利用索引查找在某一天出生的人。
(2) 不能跳过某一索引列。例如,你不能利用索引查找last name为Smith且出生于某一天的人。
(3) 存储引擎不能使用索引中范围条件右边的列。例如,如果你的查询语句为WHERE last_name="Smith" AND first_name LIKE 'J%' AND dob='1976-12-23',则该查询只会使用索引中的前两列,因为LIKE是范围查询。
- mysql索引优化问题
- MySql优化--索引优化
- MySql索引优化注意
- MySql索引优化注意
- Mysql索引的优化
- MySQL索引优化
- MySQL索引优化
- MySQL查询优化---索引
- MySql索引优化注意
- MySQL索引优化笔记
- Mysql索引优化浅谈
- MysqL索引优化
- MYSQL [ 优化 --- 索引 ]
- mysql复合索引优化
- mysql 索引优化
- Mysql 索引优化
- Mysql索引优化
- MySQL优化索引解析
- ListPreference的summary和entries中插入图片
- c++ 深入理解虚函数
- CSS动画
- noip2017初赛,2017赛季的终点
- git 切换远程分支
- mysql索引优化问题
- 阿达·洛芙莱斯——第一个女程序员(媛)
- 字典树(Tire树)模板 & 例题
- C语言三数比大小
- 跟着姜少学Java基础编程之六:选择结构之if分支
- bzoj2427 [HAOI2010]软件安装 ( 树形背包 + tarjan )
- Okhttp的借口调用 和Banner实现学习下okhttp还是蛮必要的,本篇博客首先介绍okhttp的简单使用
- 如果 —— 拉迪亚德·吉卜林(作用:静心)
- 最大子矩阵(天坑)