1
伊夫很奇怪的问题,当我执行类似下面的查询的奇怪表现:,Postgres的查询
with ap as (
SELECT id from adress limit 1000)
)
SELECT distinct house.id, house.date
FROM house
WHERE house.adressid in (select id from ap)
LIMIT 9999
我GE 100毫秒
但是,当我更改限制到10,然后即时得到一个内resulkts后导致20秒
with ap as (
SELECT id from adress limit 1000)
)
SELECT distinct house.id, house.date
FROM house
WHERE house.adressid in (select id from ap)
LIMIT 10
当然有上adressid
索引3210在房子里有9百万行。
有没有人有一个想法hoiw我可以尝试提高性能。香港专业教育学院减少了问题这个非常简单的一个,但在现实中的结构要复杂得多这就是为什么我没有为你提供表中创建和查询计划...
我会用EXPLAIN分析并找到如何PostgreSQL的实际处理两个查询开始。 – Gary
您可能过于简化了查询。 Postgres(除非它有一些非常不寻常的优化)应该为这两个查询做同样的工作 - 它必须在应用外部'limit'之前生成'select distinct'的整个列表。可能还有其他事情正在发生。 –
其实这是我改变的唯一的东西 – Snorlax