Mysql索引优化要领【MySQL教程】,Mysql,方法,索引
作者:搜教程发布时间:2019-11-27分类:MySQL教程浏览:55评论:0
code-thinker
专注但不限于Java Web范畴的手艺分享,愿望此民众号能成为你编程路上的良师益友。
本文主要和人人分享Mysql索引优化要领,愿望能协助到人人。索引是存储引擎用于疾速找到纪录的一种数据构造。尤其是当表的数据量越来越大的时刻,准确的索引对查询机能的提拔尤其明显。但在一样平常工作中,索引却常常被疏忽,以至被误会。本文将为人人简朴引见下Mysql索引优化的道理与注重事项。
一、索引的范例
1)B-Tree索引
B-Tree索引是用的最多的索引范例了,而且大多数存储引擎都支撑B-Tree索引。
B-Tree自身是一种数据构造,其是为磁盘或其他直接存取的辅佐装备而设想的一种均衡搜刮树。Mysql中的B-Tree索引通常是B-Tree的变种B+Tree完成的。其构造以下:
B+Tree的特点是,数据都存储在叶子节点,而且每一个叶子节点的数据都是按雷同递次(升序或降序)分列存储的,再者相邻的叶子节点都用指针连接在一点,这类构造异常适合于局限查找。
B-Tree索引能够明显加速接见数据的速率,因为存储引擎不再须要举行全表扫描来猎取须要的数据,而是从索引的根节点逐层往下举行搜刮,这大大缩小了存储引擎扫描数据的局限,因而对查询速率的提拔异常明显。
2)Hash索引
Hash索引,望文生义,就是经由过程哈希表完成的索引。其特点是只要准确婚配索引的一切列才有用。关于每一行数据,存储引擎都会对一切索引列盘算一个哈希码,Hash索引把哈希码存储在索引中,同时在哈希表中保留指向每一个数据行的指针。
在Mysql中,现在只要Memory引擎显式支撑Hash索引,而且因为Hash索引不支撑局限查找,也不支撑排序,更不支撑部份索引列婚配查找,所以Hash索援用的比较少。
下文将偏重引见B-Tree索引的用法。
为了下文叙说轻易,我们将假设有一个user表,其字段以下:
id:bigint范例,主键
name:varchar范例
age:int范例
interest:varchar范例
而且在name、age、interest上建立了一个团结索引index_1,索引递次为(name,age,interest),这个索引递次异常重要,后文将会说起。
二、B-Tree索引的用法
1)全值婚配
全值婚配指的是和索引中一切列举行婚配,如对上述user表查询 where name='aaa' and age=20 and interest='篮球' 是能够运用到索引的一切列的。
2)婚配最左前缀
婚配最左前缀是指只运用到多列索引的左侧多少列。如对上述user表查询 where name = 'aaa' 是能够运用到索引的,而且只运用到索引的第一列。
3)婚配列前缀
婚配列前缀是指只婚配某一列的开首部份,如对上述user表查询 where name like 'aaa%' 是能够运用到索引的,注重是婚配列的开首部份,假如查询的是 where name like '%aaa'就不能运用到索引了。
4)婚配局限值
如对上述user表查询 where name > 'aaa' and name < 'bbb' 也是能够运用到索引的。
5)准确婚配某一列并局限婚配别的一列
如对上述user表查询 where name='aaa' and age >10,能够运用到索引,而且运用到索引的前2列。
三、B-Tree索引的限定
1)假如不是根据索引的最左列开始查找,则没法运用索引。
如对上述user表查询 where age=20则没法运用到索引,因为age不是索引列中的最左数据列。
2)不能跳过索引中的列。
如对上述user表查询 where name='aaa' and interest='足球',则只能运用到索引的第一列,因为where前提中没有包括age这一列。
相干引荐:
mysql的索引优化怎样运用
MySQL高等十三——经由过程索引优化SQL
MySQL Order By索引优化要领
以上就是Mysql索引优化要领的细致内容,更多请关注ki4网别的相干文章!
相关推荐
你 发表评论:
欢迎- MySQL教程排行
-
- 1如何修改mysql的默认时区_MySQL教程,mysql,时区
- 2mysql数据库如何创建数据表_MySQL教程,mysql,数据表
- 3linux源码安装mysql5.7_MySQL教程,linux,mysql,mysql5.7
- 4MySQL 连接查询超级详解_MySQL教程,MySQL,连接查询
- 5MySQL如何使用授权命令grant_MySQL教程,MySQL,grant
- 6mysql外键约束怎么写_MySQL教程,mysql,外键约束
- 7sql数据库触发器怎么创建_MySQL教程,sql,触发器
- 8MySQL中explain用法和结果分析(详解)_MySQL教程,MySQL,explain
- 9mysql如何设置字符集为UTF8_MySQL教程,mysql,UTF8,字符集
- 最新文章
- 广而告之