我在t1
列uid
中有超过10K条记录。我有5条记录uid='xyz'
>
现在哪种方法更好
SELECT * FROM t1 WHERE uid='xyz';
OR
SELECT * FROM t1 WHERE uid='xyz' LIMIT 5;
* uid只有5条记录为xyz *
答案 0 :(得分:4)
通常,您将limit
与order by
子句一起使用。否则,结果是任意的,可能无法重复。
如果您想要 5 记录,请使用limit 5
。如果您想要所有记录,则不要使用限制。如果两者都返回相同的数据,那么两者的性能应该非常非常相似。
答案 1 :(得分:1)
Asumming,正如你解释的那样,(绝对肯定)有5行,例如uid='xyz'
:
uid
上有索引,因为MySQL很容易“看到”只有5行需要检查。uid
上没有索引,LIMIT
版本的行为会更好,因为它会告诉MySQL在5 th 匹配行之后停止搜索 - - 避免“花时间”检查剩余的行。答案 2 :(得分:0)
不使用限制的另一个原因是现在只有5条记录。从现在起一年可能会有17个。