database - 仅选择索引属性会导致更快的查询吗?

标签 database database-design

当执行查询时,所选属性构成索引的组成部分会导致更快的查询吗?我想查询计划器/优化器可以看到请求的列可以通过索引扫描完全满足。

简单的例子

CREATE TABLE "liked" (
  "id" BIGINT NOT NULL DEFAULT nextval('liked_id_seq'),
  "userid" BIGINT NOT NULL,
  "storyid" BIGINT NOT NULL,
  "notes" TEXT,
  PRIMARY KEY ("id")
);
CREATE INDEX "liked_user" ON "liked" (
  "userid",
  "storyid"
);
ALTER TABLE "liked" ADD FOREIGN KEY ("userid") REFERENCES "users" ("id") ON DELETE CASCADE;
ALTER TABLE "liked" ADD FOREIGN KEY ("storyid") REFERENCES "story" ("id") ON DELETE CASCADE;


SELECT storyid from liked where userid = 1;

对于上面的查询,liked_user 索引中已经包含的内容没有任何外部数据,所以我想如果查询优化器可以推断生成的元组可以仅对索引感到满意。

最佳答案

它被称为“覆盖索引”,它会根据您使用的 DBMS(如果您使用的是 MySQL,则使用哪种存储方式)改变数量,从而在一定程度上提高效率。

尝试举一个具体情况的例子,如果有的话。

关于database - 仅选择索引属性会导致更快的查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/687376/

相关文章:

mysql - 如何使用 Resque 在父子之间共享 MySQL 连接?

java - Sqlite约束异常错误

database - 微软 Access : programmatically rename columns

C# 登录表单、登录按钮、安全

mysql - 关系数据库 (RDBMS) 非规范化数据

Android 打开或创建数据库

mysql - 发票表格设计

mysql - MySQL数据库结构帮助-用户通知系统

mysql - 如何在一列中获得不同的多于一列行

ruby-on-rails - 使用 Postgres hstore 的竞争条件