有效率地從每組中選擇一行
在擁有數百萬筆記錄的大型產品表中,最佳化查詢對於效能至關重要。常見的場景是根據特定列(例如每個商店的最大 ID)從表格的每組中檢索單行。
原始查詢與效能問題:
用於此任務的初始查詢是:
SELECT id, product_name, store_id FROM product GROUP BY store_id ORDER BY id.
但是,由於分組和聚合,此查詢面臨效能問題
建議方法:
建議方法:SELECT a.* FROM tableName a INNER JOIN ( SELECT store_ID, MAX(ID) max_ID FROM tableName GROUP BY store_ID ) b ON a.store_ID = b.store_ID AND a.ID = b.max_ID
該查詢在子查詢中執行分組和聚合,從而得到更好的結果
考慮使用資料庫支援並行化和最佳化的伺服器
多行選擇:SELECT ID, product_Name, store_ID FROM tableName a WHERE ( SELECT COUNT(*) FROM tableName b WHERE b.store_ID = a.store_ID AND b.ID >= a.ID ) <= 2;
以上是如何從大型資料庫表中有效率地選擇每組一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!