指定两个排序索引?

时间:2018-07-13 23:19:02

标签: sql postgresql

我有一个物化视图,其中包含我最查询的数据的几列。每列用于子句的位置,每列用于对空值的升序和降序进行最后排序。

我最初只是声明了一个多列索引,索引中列出了所有列,但是后来我发现任何包含orderby的查询都非常慢。

在此表上声明索引是什么权利?

我应该这样做吗?

ImageDownloader.default.downloadImage

我不确定这是否太多,也不必为每个列声明3个索引。

1 个答案:

答案 0 :(得分:0)

坏消息是您需要为每一列声明单独的索引。没有办法解决这个问题,因为您将需要按任何这些列进行排序,并且-在发生这种情况时-该列需要在索引位置中排在第一位。这是为了确保SQL优化器使用索引范围扫描。

好消息是每一列只需要一个。 PostgreSQL能够按正序和反向顺序使用每个索引。

我不确定您是否需要为NULLS LAST创建辅助密钥。您需要进行测试。