【发布时间】:2018-08-27 06:00:39
【问题描述】:
PostgreSQLdocumentation 指出,如果我们对索引为 ... (x ASC, y ASC) 的表运行查询 ... ORDER BY x ASC, y DESC,则无法使用索引,因为方向不匹配。
- 这是否意味着这个索引完全没用,或者数据库引擎可以使用索引对
x ASC部分进行排序(然后手动对y DESC部分进行排序)? - 如果我们运行查询
... WHERE x = 999 ORDER BY y DESC,可以使用这个索引吗?
【问题讨论】:
-
我不知道这个问题的答案,我猜至少在其中一种情况下是肯定的,但是您可以随时检查您的查询计划以了解发生了什么。如果您看到 Postgres 使用索引的最左侧部分,那么它正在被使用。
-
从未尝试过,但为什么要首先创建组合索引?最好创建两个索引
-
请注意,“方向”不匹配仅适用于多列索引。单列索引可用于双向排序
标签: postgresql indexing sql-order-by