我应该对所有“从句”字段都有索引吗?

时间:2018-07-17 18:50:50

标签: database postgresql indexing b-tree-index

我有一张桌子,像这样:

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 就足够了?

1 个答案:

答案 0 :(得分:0)

取决于。

一个合理的经验法则是,如果索引始终匹配少于记录的百分之十,则它是有用的。假设这确实是一个电影数据库,则title, kind或什至title的索引将返回一个很小的记录集,以进行进一步的过滤。我不确定,因为我不知道did是什么(可能不是一个好的字段名),但是如果它有很多值,将其添加到复合索引中是合理的。