PostgreSQL 指定索引排序规则

PostgreSQL B-tree 索引可以指定排序规则,比如升序或者降序,在特定场景下查询语句中包含 order by 时,当索引的排序规则与 order by 的顺序一致,则会显著提升查询性能。目前 PostgreSQL 只有 B-tree 索引支持指定排序规则,其他类型的索引其排序规则依赖于具体的内部实现。

在默认情况下,B-tree 索引以升序存储其数据,最后存储 null 值,即 order by x asc nulls last。当然也可以在创建索引的指定索引排序规则,如下:

索引按c1字段倒序排序,null值优先:

create index idx_t_c1 on t(c1 desc nulls first);

索引按c2字段升序排序,null值放最后:

create index idx_t_c2 on t(c2 asc nulls last);

多字段索引可以为不同字段指定不同的排序规则,c2倒序,c3升序,如下:

create index idx_t_c2_c3 on t(c2 desc nulls first, c3 asc nulls last);

上述索引对于 order by c2 desc,c3 asc 这类 SQL 会有比较大的性能提升。

文章评论

0条评论