假设我有一个包含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
。
枚举类型enum1
和enum2
只能采用几个值之一(这是否相关?)。
仅仅是最佳索引吗?
CREATE INDEX on table1 (a, c, d)
?
我是否需要指定索引的第一列为数字,而索引中的后续列为离散值?
答案 0 :(得分:1)
我建议在(c, d, a)
上建立索引。
特别地,c
和d
的顺序在索引中并不重要,但它们应该是 first 两列,其中a
跟着他们。
索引(a, c, d)
并不是最优的,因为在a
上的比较是一个不等式。