搜尋

首頁  >  問答  >  主體

mysql - SQL查询唯一字段时加上LIMIT 1会不会更快?

比如,用户的username是无重复的,如果查询某个username,可能他会把整个表都搜一遍。
如果我加入了LIMIT 1,他会不会在搜到这个username后立即停止搜索并返回呢?
这种情况下速度是不是就会快一点啊?

伊谢尔伦伊谢尔伦2876 天前719

全部回覆(7)我來回復

  • ringa_lee

    ringa_lee2017-04-17 11:06:26

    wherelimit 都具有 避免全表掃描 的功能 (mysql),區別在於:where能夠充分利用 索引,而limit 能夠限製查询行数

    limit的存在主要是為了防止 全表扫描,如果一個語句本身可以得出不用全表掃描,有沒有limit 那麼性能的差別是不大的,比如唯一索引,主键 [沒試驗過,NND]

    對於偏移量offset較大的查询,建議用好where語句,來避免全表扫描;因為limit本身沒有利用索引的縮小範圍能力

    對於任何一個查詢,首先應該想到的是如何利用 where 語句來 縮小範圍,然後利用limit限製返回行數

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 11:06:26

    如果沒有加索引,加了limit反而更慢。剛才試了一下

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 11:06:26

    如果username字段建立了unique索引,加limit就沒有意義。因為對於唯一索引數據庫的實現是B-Tree查找,精確查詢到唯一一個結果

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 11:06:26

    limit隻是控製了返回的行數,不控製實際查詢的。可以用explain檢驗

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 11:06:26

    遇到數據量比較大的表用limit會搞死數據庫的

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 11:06:26

    以前後到都說加LIMIT 1會加快速度

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 11:06:26

    為什麼不利用where的唯一索引(比如username)。limit 隻是限製顯示的條目吧

    回覆
    0
  • 取消回覆