检查数据库中是否存在该条目的最快方法是什么?

时间:2011-09-27 12:31:00

标签: mysql performance count exists

我正在寻找检查该条目存在的最快方法......

我的一生,我做过这样的事......

SELECT COUNT(`id`) FROM `table_name`

有些人不使用COUNT(id),而是COUNT(*)。那更快吗?

LIMIT 1怎么样?

P.S。当然,id我指的是主键。

感谢您的建议!

2 个答案:

答案 0 :(得分:7)

在大多数情况下,COUNT(*)比MySQL中的COUNT(id)快(因为执行COUNT()的分组查询的方式如何,可能会在将来的版本中进行优化,因此两个版本都运行相同)。但是,如果您只想查找是否存在至少一行,则可以使用EXISTS

简单:

( SELECT COUNT(id) FROM table_name ) > 0

快一点:

( SELECT COUNT(*) FROM table_name ) > 0

快得多:

EXISTS (SELECT * FROM table_name)

答案 1 :(得分:5)

如果您不担心准确性,explain select count(field) from table速度非常快。

http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/

此链接说明了count(*)count(field)之间的区别。如有疑问,count(*)

至于检查表是否为空......

SELECT EXISTS(SELECT 1 FROM table)