之前已经了解了 "选择性" 的概念, 知道选择性一般是加 前缀索引的时候,用来选合适的前缀长度的, 也知道前缀索引的算法是: 某个列在某个前缀下的所有不同值数量/记录总数
前面说的是“列的前缀”, 但下面这个多列索引, 怎么还有“前缀列”? 前缀列和列前缀一样?????都有选择性?
什么叫 "只使用了索引部分前缀列的查询来说选择性也更高" ?
首先我看不到断句在哪里? 是‘索引部分’的前缀列? 还是索引的‘部分前缀列’?
这里怎么扯到选择性的?
而且下面, 为什么customer_id的数量小了, 就排前面了?? 完全没看出怎么就选择性大了
而且后面还有个地方也很模糊:
列的前缀是说对于内容很长的列,必须使用前缀索引,否则索引将会变得很大(或者 MySQL 压根就不允许索引这些列的完整长度)
前缀列是说建了(A,B,C,D)的索引,A 或者 A,B 或者 A,B,C 都叫做前缀列
如果你的 D 列选择性并不高(也就是不同的记录数占总记录数的比值不高),但是你只使用到了 A,B,C 那么选择性也是很高的
应该断句为 索引 的 部分的前缀列
上一节是多列索引,然后引出了你列出的本节————选择合适的索引列顺序,再结合上上一节的索引选择性,作者试图给你分析在使用“多列索引”的情况下,如何提高“索引的选择性”。
首先作者分别筛选了 staff_id=2和customer_id=584的情况,customer_id 筛选出的结果集很少,这也就说明选择性更高,这句话你如果不理解怎么引出的,上一段你标红那里的下一句就是“然而,性能不只是依赖于所有索引列的选择性(整体基数),也和查询条件的具体值有关,也就是和值的整体分布有关”