Eva*_*bbs 1 sql postgresql query-optimization database-indexes postgresql-9.6
我有一个conversation_views包含列的表:user_id | conversation_id | viewed_at
还有一个INDEX on conversation_views (conversation_id, user_id)
我想查询:
select
max(viewed_at)
from conversation_views
where
conversation_id=%L
and user_id=%L
Run Code Online (Sandbox Code Playgroud)
通过此索引,该查询的性能是否良好,或者我可以使用其他策略吗?我正在使用 Postgres 9.6.12。
该查询的更好索引可能是:
CREATE INDEX on conversation_views (conversation_id, user_id, viewed_at)
Run Code Online (Sandbox Code Playgroud)
这样,它可以将索引下降到给定conversation_id和user_id出现最大viewed_at的位置,并直接读取它(如果该位置有需要忽略的不可见元组,可能会扫描一下)。
这比您现有的索引好多少取决于组合的选择性(conversation_id, user_id)。如果每个组合只有几行,则差异会很小。如果有几万的话,差别可能会很大。
但要回答您的标题问题,对于最现实的情况,您当前的索引应该已经比没有索引要好得多。
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |