gpt4 book ai didi

sql - 指定两个排序索引?

转载 作者:行者123 更新时间:2023-11-29 13:43:58 24 4
gpt4 key购买 nike

我有一个物化 View ,其中有几列我最常查询的数据。每列用于 where 子句,每列最后用于对空值进行升序和降序排序。

我最初只是声明了一个多列索引,所有列都列在索引上,但后来我注意到任何包含 orderby 的查询都非常慢。

在这个表上声明索引的权利是什么?

我应该这样做吗:

create index idx_table_search_group 
on search_table (column1, column1 asc, column1 desc nulls last, column2, column2 asc, column2 desc nulls last, ... etc);

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

最佳答案

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

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

我不确定您是否需要为 NULLS LAST 创建次要的。您需要对此进行测试。

关于sql - 指定两个排序索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51333901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com