1. 程式人生 > >索引最左前綴匹配原則

索引最左前綴匹配原則

大量 獲得 最好 排列 不能 索引 使用 如果 查詢

如果索引字符串的前面n個字符都不相同,那麽最好不要索引整個數據列,二十索引前n個字符,這樣可以節省大量空間。

如果在數據列a,b,c上建立了復合索引,索引中的數據行按照a/b/c次序排列,因此數據表會自動的按照a/b和a排列,即使指定了a,或者a和b的值,mysql也可以使用這個索引。

這個索引可以用於如下數據列的組合:

a, b,c

a,b

a

Mysql不能利用這個索引搜索沒有包含在最左前綴的內容。如按照b或者按照c來搜索,就不會使用這個索引。如果搜索給定a和c的數據,也不能使用這個索引。但是可以利用索引來查找匹配的a從而縮小搜索範圍。如需增加索引,那麽需考慮其是否為已添加索引的最左前綴,如果是,不用再添加。

【註】mysql執行查詢操作時只能使用一個索引。如果有多個可用索引,則會選擇最嚴格的一個(獲得子集最小)的索引。

最左前綴:就是最左優先,如果建立了多列索引a_b_c(a,b,c)相當於建立了索引a;a,b;a,b,c。

索引最左前綴匹配原則