3 回答

TA貢獻1869條經驗 獲得超4個贊
在最糟糕的情況下,如果您正在查看未MIN()
編制索引的字段,則使用該表需要單次完整傳遞。使用SORT
并LIMIT
需要一個文件排序。如果針對大型桌面運行,則可能會在性能方面存在顯著差異。作為一個毫無意義的數據點,在我的開發服務器上占用MIN()
了.36秒,SORT
然后LIMIT
在我的開發服務器上的106,000行表中占用了0.84秒。
但是,如果您正在查看索引列,則差異更難以注意到(兩種情況下無意義的數據點均為0.00秒)。然而,看看explain的輸出,它看起來MIN()
能夠簡單地從索引中獲取最小值('Select tables optimized away'和'NULL'行),SORT
而且LIMIT
仍然需要對索引執行有序遍歷(106,000行)。實際的性能影響可能微不足道。
它似乎MIN()
是要走的路 - 在最壞的情況下更快,在最好的情況下無法區分標準SQL,并且最明確地表達了您想要獲得的價值。正如mson所提到的那樣,似乎使用SORT
并且LIMIT
可取的唯一情況是,你在編寫一個從任意列中找到頂部或底部N值的一般操作,并且不值得寫出特殊情況操作。

TA貢獻2039條經驗 獲得超8個贊
SELECT MIN(`field`) FROM `tbl`;
僅僅因為它與ANSI兼容。限制1特別適用于MySql,因為TOP是SQL Server。

TA貢獻1826條經驗 獲得超6個贊
MIN是優選的。
ORDER BY + LIMIT有用的另一個原因是,如果要獲取與MIN列不同的列的值。
例:
SELECT some_other_field, fieldFROM tblORDER BY field LIMIT 1
添加回答
舉報