查询优化器说明索引是否可用来评估过滤器。 出于此目的的考虑,索引列可以是使任意带有一个索引的单列,也可以是混合索引中指定的首列。
如果索引中所包含的值为必需的所有值,那么数据库服务器将不读取行。只要数据库服务器可以直接从索引读取值,就可以更快速地忽略对数据页面的页面查找。
数据库服务器可以首先通过在合适的索引中查找行来确定表中的相关行的位置。如果没有合适的索引,那么数据库服务器必须对每个表进行完全扫描。
数据库服务器可以使用索引来查找匹配值。 以下连接表达式显示了这样一个示例:
WHERE customer.customer_num = orders.customer_num
如果首先读取 customer 的行,那么可以将 customer_num 的值应用于 orders.customer_num 的索引。
如果子句中的所有列都按所要求的顺序出现在单索引中,那么数据库服务器可以使用该索引来按行既定的顺序读取它们,从而避免了排序。
如果子句中的所有列都出现在一个索引中,那么数据库服务器可以从索引中读取具有相同键的组,而无需在行从其表中检索出来之后再进行额外的处理。