一个 多列索引 具有反向排序顺序:
CREATE INDEX tbl_low_high_idx on tbl(low, high DESC);
这样,可以将索引向前扫描到
low足够高的位置,然后对所有行进行扫描直到
high太低为止-
一次扫描。这就是为什么要对索引执行排序顺序的主要原因:将不同的排序顺序组合在具有不同顺序的多列索引中。基本上,b树索引可以以几乎相同的速度在两个方向上遍历,因此单列索引几乎不需要
ASC/
DESC。
您可能也对 PostgreSQL 9.2* 的新
范围类型
感兴趣。可以使用
GiST索引
进行索引,如下所示: *
****
CREATE INDEX tbl_idx ON tbl USING gist (low_high);
应该使这种形式的查询执行得非常快:
SELECt * FROM tbl WHERe my_value <@ low_high;
<@是“元素包含在”运算符中。



