这两种索引创建模式之间有什么区别吗?

时间:2018-07-18 21:16:19

标签: sql postgresql

这只是一个简单的问题,可以在评论中回答。这两个定义之间是否有任何区别:

CREATE INDEX ON sample ((column1 = true), (column2 = true));

CREATE INDEX ON sample ((column1 = true AND column2 = true));

假设两列都将与AND条件一起使用。在使用SELECT column3 FROM sample WHERE column1 = true AND column2 = true;之类的查询时,第二种方法是否会更具优势?或者它们相同?

谢谢。

1 个答案:

答案 0 :(得分:1)

绝对。第一个创建带有两个键的索引,每个键都可以使用2个值(如果计算NULL,则为3个值)。第二个在一个键上创建索引,该键可以具有2个(或3个)值。

两者都可以用于您要考虑的查询。但是,只有第一个可以用于:

where column1 = true

通常,索引在选择时最有用。如果条件同样适用于数据,则索引将返回大约25%的行-仍然是一堆行,索引可能没有用。