我的所有问题都是上面的标题。
其实我想知道limit
在mysql中是如何工作的?假设这个表:
// colors
+----+-------+
| id | color |
+----+-------+
| 1 | blue |
| 2 | red |
| 3 | green |
| 4 | white |
| 5 | grey |
| 6 | brown |
| 7 | black |
| 8 | pink |
+----+-------+
如您所知id
列是唯一的(它是PK)。这是我的疑问:
SELECT color FROM colors WHERE id = 5;
现在我想知道,如果我在结尾使用LIMIT 1
,上面的查询会更有效吗?
答案 0 :(得分:1)
这是一项不必要的工作。
答案 1 :(得分:1)
MySQL(以及所有其他rdbms)基于主键非常有效地定位记录。添加限制1不会对速度产生重大影响。
但是,如果上述(或类似)查询在选择列表中使用了相关子查询,则限制1子句将很方便。此类查询必须返回单个记录,限制1将明确告知MySQL该查询不能返回超过1行。
select ..., (SELECT color FROM colors WHERE id = outer_query_field limit 1)
from ...