此SELECT的最佳索引是什么?

时间:2019-12-30 17:17:53

标签: sql postgresql

假设我有一个包含4列的表格: CREATE TABLE table1 (a BIGSERIAL UNIQUE, b INTEGER, c enum1, d enum2);

a | b | c | d|
¯¯|¯¯ |¯¯ |¯¯
2 | 5 |'x'|'r'  
5 | 1 |'y'|'s'
8 | 12|'z'|'r'
10| 8 |'x'|'t'
    ...    

该表包含大量行,我关心以下形式的查询的性能:

SELECT SUM(b) WHERE a > A AND c = C and d = D

枚举类型enum1enum2只能采用几个值之一(这是否相关?)。

仅仅是最佳索引吗?

CREATE INDEX on table1 (a, c, d)

我是否需要指定索引的第一列为数字,而索引中的后续列为离散值?

1 个答案:

答案 0 :(得分:1)

我建议在(c, d, a)上建立索引。

特别地,cd的顺序在索引中并不重要,但它们应该是 first 两列,其中a跟着他们。

索引(a, c, d)并不是最优的,因为在a上的比较是一个不等式。