Mysql中的联合索引、前缀索引、覆盖索引

原创 2017年04月16日 13:09:01

Mysql中的联合索引、前缀索引、覆盖索引

索引

索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。

联合索引

又名复合索引,由两个或多个列的索引。它规定了mysql从左到右地使用索引字段,对字段的顺序有一定要求。一个查询可以只使用索引中的一部分,更准确地说是最左侧部分(最左优先)。如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

CREATE TABLE test(a INT, b INT, c INT, KEY(a, b, c));

前缀索引

对于列的值较长,比如BLOB、TEXT、VARCHAR,就必须建立前缀索引,即将值的前一部分作为索引。这样既可以节约空间,又可以提高查询效率。但无法使用前缀索引做 ORDER BY 和 GROUP BY,也无法使用前缀索引做覆盖扫描。

 # 语法
 ALTER TABLE table_name ADD KEY(column_name(prefix_length));
 # 示例
 ALTER TABLE city ADD KEY(cityname(7))

覆盖索引

跟联合索引有点类似,就是在查询t的时候只用去读取索引而取得数据,无需进行二次查询相关表。这样的索引的叶子节点上面也包含了他们索引的数据。

判断标准:使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询。

版权声明:本文为博主原创文章,未经博主允许不得转载。

MySQL_MySQL 联合索引详解 以及注意事项

联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,...
  • u010003835
  • u010003835
  • 2016年06月02日 07:52
  • 5202

MySQL联合索引性能比较

B树、联合索引、性能分析
  • loongshawn
  • loongshawn
  • 2017年09月01日 19:15
  • 1136

MySQL单列索引和组合索引的区别介绍

MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习。   为了形象地对比两者,再建...
  • weiqubo
  • weiqubo
  • 2015年12月10日 23:30
  • 7430

MySQL单列索引和联合索引

MySQL单列索引和联合索引 所有的MySQL列类型能被索引。在相关的列上的使用索引是改进SELECT操作性能的最好方法。 一个表最多可有16个索引。最大索引长度是256个字节,尽...
  • robert198837
  • robert198837
  • 2013年05月29日 10:26
  • 12660

mysql中联合索引的使用

在oracle,如果存在一个多列的组合索引,比如a,b,c列上存在一个组合索引,那么在查询中如果出现where b=’xx’的情况是可以使用组合索引的,但是mysql是无法使用的,见下面的测试 | ...
  • aoerqileng
  • aoerqileng
  • 2016年06月16日 15:44
  • 708

mysql前缀索引

mysql的前缀索引
  • Debug_zhang
  • Debug_zhang
  • 2015年08月23日 17:34
  • 1695

联合索引在navicate的使用

网站的查询内容,刚刚做出了个雏形。面对2.5G的大数据表,如果没有索引的话,真的不敢想象,速度,那是相当的慢!同样是100-10000的查询,之前需要10秒左右,现在不到一秒就搞定了。 具体设置...
  • wenqingzzz
  • wenqingzzz
  • 2016年03月20日 19:35
  • 310

高性能mysql之前缀索引

高性能mysql之前缀索引
  • john1337
  • john1337
  • 2017年05月02日 15:58
  • 736

mysql组合索引最左前缀

原文出处:http://www.justwinit.cn/post/1935/ create TABLE myIndex ( i_testID INT NOT NULL AUTO_INCRE...
  • AlbertFly
  • AlbertFly
  • 2016年09月12日 18:07
  • 1436

mysql前缀索引的索引选择性

mysql前缀索引的索引选择性一. 基础概念 在mysql中建立前缀索引的意义在于相对于整列建立索引,前缀索引仅仅是选择该列的部分字符作为索引,减少索引的字符可以节约索引空间,从而提高索引效率,但这...
  • dhrome
  • dhrome
  • 2017年06月03日 17:07
  • 497
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mysql中的联合索引、前缀索引、覆盖索引
举报原因:
原因补充:

(最多只允许输入30个字)