这只是一个简单的问题,可以在评论中回答。这两个定义之间是否有任何区别:
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;
之类的查询时,第二种方法是否会更具优势?或者它们相同?
谢谢。
答案 0 :(得分:1)
绝对。第一个创建带有两个键的索引,每个键都可以使用2个值(如果计算NULL
,则为3个值)。第二个在一个键上创建索引,该键可以具有2个(或3个)值。
两者都可以用于您要考虑的查询。但是,只有第一个可以用于:
where column1 = true
通常,索引在选择时最有用。如果条件同样适用于数据,则索引将返回大约25%的行-仍然是一堆行,索引可能没有用。