我收到了一列表| id | postNumber |
列。一個或多個條目屬於一個postNumber
。我需要爲每個postNumber
申請最新的條目。mysql - 替代IN()
SELECT `dienstbuch`.`id` , `dienstbuch`.`postNumber`
FROM `dienstbuch`
WHERE `dienstbuch`.`id`
IN (
SELECT max(`dienstbuch`.`id`)
FROM dienstbuch
GROUP BY `dienstbuch`.`postNumber`
)
ORDER BY `id` DESC
LIMIT 2000,10
在包含多個條目的表上使用時,查詢需要很長時間。
我該如何改進?
爲什麼按郵編分組?你在索引什麼 – exussum
你想達到什麼目的?你需要每個postNumber最大ID? – Ashalynd
你正確地將IN(子查詢)標識爲性能問題的原因。我相信dienstbuch表中的每一行都會執行子查詢,並且這對於大集合將會很昂貴。考慮使用內聯視圖和JOIN操作,或者針對特定查詢,完全避免子查詢。 (請參閱我的答案。)適當的索引也會提高性能,但真正的性能問題是(可能)重複執行子查詢。 – spencer7593