優化分組最大查詢
提供的查詢旨在檢索按option_id 分組的最大ID 記錄,由於掃描所有記錄而面臨性能問題行。為了解決這個問題,請考慮使用儲存每個 option_id 的最大 ID 值的程式索引。這種方法只需掃描索引即可高效檢索最大值。
傳統方法,如索引 (option_id, id) 或 (option_id, id DESC),無法充分最佳化查詢。
MySQL 的最佳化
MySQL 5.5 為此引入了進階最佳化 詢問。透過索引 (option_id, id),MySQL 利用索引進行分組操作,避免了順序掃描的需要。
Postgres 使用參考表優化
在Postgres 中,建立一個參考表options,其具有與記錄中不同option_ids 相對應的唯一option_ids
使用相關子查詢從記錄中檢索每個option_id的最大 ID:
此方法支援僅索引掃描,最大限度地減少記錄中的行存取。此查詢的理想索引:
Postgres Optimization with LATERAL Join (Postgres 9.3 )
或者,在 Postgres 9.3 及更高版本中,使用 LATER來實現類似的最佳化:
這種方法也利用僅索引掃描來有效執行查詢。
以上是如何最佳化 MySQL 和 PostgreSQL 中的分組最大查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!