亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MIN / MAX與ORDER BY和LIMIT

MIN / MAX與ORDER BY和LIMIT

紅糖糍粑 2019-08-12 17:24:23
MIN / MAX與ORDER BY和LIMIT在以下查詢中,您認為哪種方法更好?你的理由是什么(代碼效率,更好的可維護性,更少的WTFery)......SELECT MIN(`field`)FROM `tbl`;SELECT `field`FROM `tbl`ORDER BY `field`LIMIT 1;
查看完整描述

3 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

在最糟糕的情況下,如果您正在查看未MIN()編制索引的字段,則使用該表需要單次完整傳遞。使用SORTLIMIT需要一個文件排序。如果針對大型桌面運行,則可能會在性能方面存在顯著差異。作為一個毫無意義的數據點,在我的開發服務器上占用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值的一般操作,并且不值得寫出特殊情況操作。


查看完整回答
反對 回復 2019-08-12
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

SELECT MIN(`field`)
FROM `tbl`;

僅僅因為它與ANSI兼容。限制1特別適用于MySql,因為TOP是SQL Server。


查看完整回答
反對 回復 2019-08-12
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

MIN是優選的。

ORDER BY + LIMIT有用的另一個原因是,如果要獲取與MIN列不同的列的值。

例:

SELECT some_other_field, fieldFROM tblORDER BY field
LIMIT 1


查看完整回答
反對 回復 2019-08-12
  • 3 回答
  • 0 關注
  • 1563 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號