84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
比如,用户的username是无重复的,如果查询某个username,可能他会把整个表都搜一遍。 如果我加入了LIMIT 1,他会不会在搜到这个username后立即停止搜索并返回呢? 这种情况下速度是不是就会快一点啊?
LIMIT 1
小伙看你根骨奇佳,潜力无限,来学PHP伐。
where 和 limit 都具有 避免全表扫描 的功能 (mysql),区别在于:where能够充分利用 索引,而limit 能够限制查询行数
where
limit
mysql
索引
查询行数
limit的存在主要是为了防止 全表扫描,如果一个语句本身可以得出不用全表扫描,有没有limit 那么性能的差别是不大的,比如唯一索引,主键 [没试验过,NND]
全表扫描
唯一索引
主键
对于偏移量offset较大的查询,建议用好where语句,来避免全表扫描;因为limit本身没有利用索引的缩小范围能力
偏移量offset
查询
对于任何一个查询,首先应该想到的是如何利用 where 语句来 缩小范围,然后利用limit来限制返回行数
如果没有加索引,加了limit反而更慢。刚才试了一下
如果username字段建立了unique索引,加limit就没有意义。因为对于唯一索引数据库的实现是B-Tree查找,精确查询到唯一一个结果
limit只是控制了返回的行数,不控制实际查询的。可以用explain检验
遇到数据量比较大的表用limit会搞死数据库的
以前后到都说加LIMIT 1会加快速度
为什么不利用where的唯一索引(比如username)。limit 只是限制显示的条目吧
where
和limit
都具有 避免全表扫描 的功能 (mysql
),区别在于:where
能够充分利用索引
,而limit
能够限制查询行数
limit
的存在主要是为了防止全表扫描
,如果一个语句本身可以得出不用全表扫描,有没有limit
那么性能的差别是不大的,比如唯一索引
,主键
[没试验过,NND]对于
偏移量offset
较大的查询
,建议用好where
语句,来避免全表扫描
;因为limit
本身没有利用索引
的缩小范围能力对于任何一个查询,首先应该想到的是如何利用 where 语句来 缩小范围,然后利用
limit
来限制返回行数如果没有加索引,加了limit反而更慢。刚才试了一下
如果username字段建立了unique索引,加limit就没有意义。因为对于唯一索引数据库的实现是B-Tree查找,精确查询到唯一一个结果
limit只是控制了返回的行数,不控制实际查询的。可以用explain检验
遇到数据量比较大的表用limit会搞死数据库的
以前后到都说加LIMIT 1会加快速度
为什么不利用where的唯一索引(比如username)。limit 只是限制显示的条目吧