我只想知道哪个是最快的。
我正在尝试做的只是检查表上是否存在数据。我大多数时候都在使用“ LIMIT”,但是在您看来或有基础的情况下,哪一种是检查数据是否存在最快的方法。
例:
限制1:
SELECT ID
FROM TABLE
WHERE ID=1 LIMIT 1;
存在:
SELECT EXISTS(
SELECT *
FROM TABLE
WHERE ID=1);
计数(*):
SELECT (*)
FROM TABLE;
计数(ID):
SELECT (ID)
FROM TABLE;"
另外:我正在使用InnoDB。
限制始终是最快的,因为它会迭代表的一行。
存在与限制没有什么区别,因为您只添加了另一个选择语句,我们可以说它的效率与第一个相同。
Count将迭代所有表并计数结果。当您使用count()时,默认情况下,mysql对表的主键进行计数。我已经对大表中的count(id),count(),count(field)和count(1)进行了一些测试,没有太大的区别。我认为,除非您计数的字段不是索引,否则“ count”将始终尝试对索引进行计数,但是许多人说我们应该使用count(id)而不是count(*)。
在一张小桌子上,这四种方式都可以正常工作。但是,如果您加入一些大桌子,计数将需要非常长的时间。
因此,总共使用的时间为count(*)> count(id)>>存在>限制
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句