2011-09-27 66 views
6

我正在寻找检查项存在以最快的方式...什么是检查数据库中存在条目的最快方法?

我所有的生活,我做了这样的事情...

SELECT COUNT(`id`) FROM `table_name` 

有些人不使用COUNT(id),但是COUNT(*)。这是否更快?

LIMIT 1怎么样?

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

谢谢你的建议!

+0

您最好使用SELECT COUNT(1)FROM table_name –

+3

最快的方法检查表中是否存在表或快速est方法来检查数据库中的表是否有> 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) 
+0

我可以在这些例子中使用'WHERE'x' ='abc''吗?那么LIMIT 1呢?也许它确实提高了性能? – daGrevis

+0

您可以使用任何这些内部的任何复杂条件(WHERE,多个JOIN)。如果'id'不能为空,所有3个都是等价的(在相同的情况下它们都返回TRUE或FALSE)。 –

+1

'EXISTS'实际上像'LIMIT 1'一样工作。当找到符合标准的行时,它会停止搜索更多。 –

相关问题