這是我的表:如何避免子查詢?
ID KEY VALUE
1 alpha 100
2 alpha 500
3 alpha 22
4 beta 60
5 beta 10
我想檢索所有KEY
-s他們最新值的列表(其中ID
是其最大):
ID KEY VALUE
3 alpha 22
5 beta 10
在MySQL我正在使用這個查詢,這是無效的:
SELECT temp.* FROM
(SELECT * FROM t ORDER BY id DESC) AS temp
GROUP BY key
是否有可能在這種情況下避免子查詢?
MySQL將創建** **許多臨時表,而在我的例子中有將只有一個。你確定你的SQL更快嗎? – yegor256 2010-10-26 06:51:38
我沒有運行MySQL,但試用兩個版本並比較兩個計劃以確定最佳解決方案應該不難。只使用5個ID的SQL Server,這兩種解決方案的執行速度同樣快。使用13個ID,LEFT JOIN解決方案佔55%,INNER JOIN解決方案佔45%。當你的表增長時,你可以預期這種差異會變得更加明顯。 *注意:ID列是主鍵,值列上有一個索引* – 2010-10-26 07:45:17
...應該讀*「鍵列上有一個索引」* – 2010-10-26 07:57:47