【数据库】覆盖索引了解吗?(约278字)

覆盖索引了解吗?

覆盖索引(Covering Index)指的是一种索引能够“覆盖”查询中所涉及的所有列,换句话说,查询所需的数据全部都可以从索引中直接获取,而无需访问数据表的行数据(也就是无需回表)。

通常情况下,索引中只包含表的某些字段,数据库在通过索引查找到满足条件的记录后,还需要回到表中获取其它字段的数据,这个过程叫做“回表”。

假设有一张用户表 users,包含以下字段:id、name、email、age。执行下面的查询:

SELECT age, email FROM users WHERE name = "张三";

如果在 name 列上创建了索引,但没有在 age 和 email 列上创建索引,那么数据库引擎会:

  1. 使用 name 列的索引查找到满足条件的记录的 id。
  2. 根据 id 回表查询 age 和 email 字段的数据。

如果创建了一个覆盖索引 idx_users_name_email_age 包含 name、email、age 列:

CREATE INDEX idx_users_name_email_age ON users (age, name, email);

那么执行:

SELECT age, email FROM users WHERE name = "张三";

查询时可以直接从索引中获取 age 和 email 的值,而不需要回表。这是因为索引已经覆盖了查询所需的所有字段。

三分恶面渣逆袭:覆盖索引

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容