# Index Selection Considerations 


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

------------------------------------------------------------
- How many access conditions are covered by the column of the index: The value of the access condition here is how many columns of the index can cover the query conditions in the where clause. If an index's column set covers more access conditions, then we think the index is better.

- Does the index need to return a table: If the index does not need to return a table, use the IndexReader operator. When an index scan requires a table return, the IndexLookupReader operator will be used. The index cost of not returning a table is less than an index that returns a table. If all indexes need to return tables, the fewer columns are returned, the better the index

- Select whether the index satisfies a certain order: because the reading of the index guarantees the order of certain sets of columns, the index that satisfies the order required by the query is due to an unsatisfied index in this dimension. We call the above evaluation method Skyline-Pruning. Skyline-Pruning is a heuristic filtering rule for indexes that reduces the probability that an incorrect estimate will cause the wrong index to be selected.

