如何解决PostgreSQL可以使用索引进行行比较吗?
假设我们有以下SQL:
SELECT a,b,c
FROM example_table
WHERE a = '12345' AND (b,c) <= ('2020-08-15'::date,'2020-08-15 00:40:33'::timestamp)
LIMIT 20
PostgreSQL是否可以有效地使用在(a,b,c)上定义的B树索引来回答此查询?
详细说明用例。此SQL查询是我的游标分页实现的一部分。由于我将UUID用作主键,因此我不得不诉诸于使用date / timestamp列作为游标,无论如何,它更符合我的实际需求。我是PostgreSQL的新手,并且具有逐行比较功能,因此我不确定如何使用索引来加快速度。在使用“解释分析”的测试中,我无法使查询使用索引,但是我认为这可能是由于表中没有很多行,所以表扫描效率更高。
解决方法
好吧,它应该使用索引。但是只有前两列。它可以扫描您指定的值为a
的行。如果索引是表的最新信息,则Postgres可以从索引中提取b
和c
的值。这样一来,它便可以扫描b
的一系列值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。