# 索引选择的维度（A）

![left](./student-guide/diagram/19-Index-selected-dimensions-01-01.png)

-----------------------------------------------------------------------
- 索引的列涵盖了多少访问条件：这里的访问条件值得是索引的列可以覆盖多少 where 子句中的查询条件。如果某个索引的列集合涵盖的访问条件越多，那么我们就认为这个索引越好。

- 索引是否需要回表：如果索引不需要回表，使用 indexReader 算子，当索引扫描需要回表时，将走 IndexLookupReader 算子。不用回表的索引代价是小于回表的索引的。如果所有的索引都需要回表，那么回表的列越少，这个索引越好

- 选择该索引是否能满足一定的顺序：因为索引的读取可以保证某些列集合的顺序，所以满足查询要求顺序的索引在这个维度上是由于不满足的索引。我们称以上的评判方式为 Skyline-Pruning。Skyline-Pruning 是一个针对索引的启发式过滤规则，能降低错误估算导致选错索引的概率。

