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