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