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,...

mysql 给表添加一个联合唯一索引

项目中需要用到联合唯一索引: 例如:user表中有user_

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

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

sqlserver中复合索引和include索引到底有多大区别?

一:从数据页角度看问题 1. 做两个表,插入两条数据,在test1上做复合索引,在test2上做include索引,如下图: 1 -- 在test1表中插入2条记录 2 CREAT...

mysql多列索引和最左前缀

数据库的索引可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织存放,加快存储引擎(索引是存储引擎实现)查找记录的速度。 索引优化是数据库优化的最重要手段。 如果查...

mysql正确建立索引以及最左前缀原则

1. 索引建立的原则 用于索引的最好的备选数据列是那些出现在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。 仅仅出现在SELECT关键字后面的输出数据列列表中的数据列...

mysql前缀索引

mysql的前缀索引

mysql 确定前缀索引长度方法

应用场景: 数据库里有个地址(address)字段,类型为varchar(100),业务决定了要经常根据address来进行查询。 确定选择性: [sql] view p...

MySQL索引之前缀索引和索引选择性

有时需要索引很长的字符列,它会使索引变大而且变慢。一个策略就是模拟哈希索引。但是有时这也不够好,那? 通常可以索引开始的几个字符,而不是全部值,以节约空间并得到好的性能。这使索引需要的空间变小,...

学习笔记--mysql索引(三) 独立的列,前缀索引和索引的选择性

索引可以提高查询效率,但需要正确的索引策略才能发挥效果(测试中的示例数据库为mysql的sakila数据库,链接:http://dev.mysql.com/doc/sakila/en/)。 独立的列,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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