比如,用户的username是无重复的,如果查询某个username,可能他会把整个表都搜一遍。
如果我加入了LIMIT 1
,他会不会在搜到这个username后立即停止搜索并返回呢?
这种情况下速度是不是就会快一点啊?
ringa_lee2017-04-17 11:06:26
where
和 limit
都具有 避免全表掃描 的功能 (mysql
),區別在於:where
能夠充分利用 索引
,而limit
能夠限製查询行数
limit
的存在主要是為了防止 全表扫描
,如果一個語句本身可以得出不用全表掃描,有沒有limit
那麼性能的差別是不大的,比如唯一索引
,主键
[沒試驗過,NND]
對於偏移量offset
較大的查询
,建議用好where
語句,來避免全表扫描
;因為limit
本身沒有利用索引
的縮小範圍能力
對於任何一個查詢,首先應該想到的是如何利用 where 語句來 縮小範圍,然後利用limit
來限製返回行數