覆盖查询是说你想要查询的内容就在索引上, 所以可以从索引上获取结果直接返回.
非覆盖的查询需要先通过索引找到主键, 然后通过主键找到对应的文档(行), 然后返回指定的文档。
以SQL数据库为列:
表的定义
create table users (
ID primary key auto increment;
Name varchar(100)
Age int
)
alter table users create index on Name
select ID, Name from users where Name = "张三";
因为Name已经创建了索引,所以当查询到 Name="张三"的时候,可以直接返回对应的ID
但是如果是下面的这条SQL, 就需要增加一次磁盘访问了.
select ID, Name, Age from users where Name = "张三";
因为当通过Name查询的时候,Age的信息并不在Name的索引上,所以需要根据ID再次从磁盘上找到对应的行,然后从这一行取出感兴趣的Age字段的值.