MySQL(总)MySQL索引

索引设计与优化读书笔记<一>(未完结)

2018-04-04  本文已影响0人  飞翔的Tallgeese

概念

关于索引的三星原则

第一颗星:包含所有可匹配的索引列(使得索引片尽量的窄)

eg.

select a,d,f from tb where a='xxx' and b='yyy' and c='zzz' order by d,e;

索引需要包含a,b,c三列;

第一颗星如果包含a,b,c三列可以保障索引片尽量的窄(涉及到索引的过滤性)

第二颗星:避免排序

eg.

select a,d,f from tb where a='xxx' and b='yyy' and c='zzz' order by d,e;

索引需要包含d,e,同时满足d,e的排序;

第二颗星可以避免额外的排序操作,避免filesort;

第三颗星:包含所有查询项

eg.

select a,d,f from tb where a='xxx' and b='yyy' and c='zzz' order by d,e;

个人理解第三颗星的查询项指的是a,d,f,而不是所有三颗星涉及到的a,b,c,d,e,f;

第三颗星可以保证访问索引即可,不需要回表验证;(每一次回表都会产生随机IO)

重要程度:

第三颗星第一颗星>

上一篇下一篇

猜你喜欢

热点阅读