我有一张桌子,像这样:
CREATE TABLE films (
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10)
);
我有一个索引,像这样:
CREATE INDEX films_title_kind_idx ON films (title, kind);
我有一个查询,像这样:
SELECT title, did, kind, date_prod
FROM films
WHERE title = 'title1' AND
kind = 'kind2' AND
did = 4;
我应该创建3列索引吗?还是当前索引 films_title_kind_idx 就足够了?
答案 0 :(得分:0)
取决于。
一个合理的经验法则是,如果索引始终匹配少于记录的百分之十,则它是有用的。假设这确实是一个电影数据库,则title, kind
或什至title
的索引将返回一个很小的记录集,以进行进一步的过滤。我不确定,因为我不知道did
是什么(可能不是一个好的字段名),但是如果它有很多值,将其添加到复合索引中是合理的。