优化器选择用来读取表的方法称为存取计划。
访问表的最简单的方法是按顺序读取它,这称为表扫描。
当必须读取表的大部分或者表没有对查询十分有用的索引时,优化器将选择表扫描。
优化器还可以选择用索引来访问该表。
如果索引中的列与查询的过滤器中的某个列相同,那么优化器可以使用索引仅检索查询所需要的行。如果所请求的列在表的一个索引中,那么优化器可以使用
仅键索引扫描。数据库服务器从索引检索需要的数据而不访问相关联的表。
要点: 优化器不会为 VARCHAR 列选择仅键扫描。如果您希望利用仅键扫描,那么请使用带 MODFIY 子句的 ALTER TABLE 将该列更改为 CHAR 数据类型。
优化器比较每个计划的成本来确定最佳的计划。数据库服务器通过估计所需的 I/O 操作数、产生结果的计算量、访问的行数和排序等计算出成本。