最左前缀匹配及联合索引
注意,mysql一次查询最多只能用一个索引。
单索引不存在什么最左前缀匹配,如果单索引存在多个可用的索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。
一、联合索引
下面是mysql里创建'联合索引'的意义,看那些回答
link:为什么需要联合索引
二、最左前缀匹配
因为前面文章或多或少讲了一些最左前缀匹配的规则,下面是一些简单的例子:
link:匹配例子
里面的第二个例子要注意,索引不止看where语句,也和select相关,如果索引的值符合where+select涉及到的列同样也会使用索引。
慢查询优化
慢查询及查询速度太慢,通常是和最左前缀匹配有关,需要调整索引列或者索引列的顺序。
下面是美团点评技术团队的文章,里面的慢查询优化比较详细,里面的《MySQL索引原理》小节有点问题就不用看了。
link:慢查询优化
聚集索引
mysql的InnoDB引擎的表自身有一个主键作为索引,使用的就是聚集索引。
link:什么是聚集索引
Highlight
mysql一次查询最多只能用一个索引。
单索引如果存在多个可用的索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。
建了一个(a,b,c)的复合索引,那么实际等于建了(a),(a,b),(a,b,c)三个索引
索引不止看where语句,也和select相关,如果索引的值符合where+select涉及到的列同样也会使用索引。
InnoDB引擎的数据表自身就算是一个索引(主键),使用的就是聚集索引
请尽量在InnoDB上采用自增字段做主键。
北京鼻头鼻翼缩小http://www.ahwndz.com/BJYestar/show-12-3162-1.shtml
注意,mysql一次查询最多只能用一个索引。
单索引不存在什么最左前缀匹配,如果单索引存在多个可用的索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。
一、联合索引
下面是mysql里创建'联合索引'的意义,看那些回答
link:为什么需要联合索引
二、最左前缀匹配
因为前面文章或多或少讲了一些最左前缀匹配的规则,下面是一些简单的例子:
link:匹配例子
里面的第二个例子要注意,索引不止看where语句,也和select相关,如果索引的值符合where+select涉及到的列同样也会使用索引。
慢查询优化
慢查询及查询速度太慢,通常是和最左前缀匹配有关,需要调整索引列或者索引列的顺序。
下面是美团点评技术团队的文章,里面的慢查询优化比较详细,里面的《MySQL索引原理》小节有点问题就不用看了。
link:慢查询优化
聚集索引
mysql的InnoDB引擎的表自身有一个主键作为索引,使用的就是聚集索引。
link:什么是聚集索引
Highlight
mysql一次查询最多只能用一个索引。
单索引如果存在多个可用的索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。
建了一个(a,b,c)的复合索引,那么实际等于建了(a),(a,b),(a,b,c)三个索引
索引不止看where语句,也和select相关,如果索引的值符合where+select涉及到的列同样也会使用索引。
InnoDB引擎的数据表自身就算是一个索引(主键),使用的就是聚集索引
请尽量在InnoDB上采用自增字段做主键。
北京鼻头鼻翼缩小http://www.ahwndz.com/BJYestar/show-12-3162-1.shtml