我正在寻找检查项存在以最快的方式...什么是检查数据库中存在条目的最快方法?
我所有的生活,我做了这样的事情...
SELECT COUNT(`id`) FROM `table_name`
有些人不使用COUNT(id)
,但是COUNT(*)
。这是否更快?
LIMIT 1
怎么样?
P.S. id
我的意思是主键,当然。
谢谢你的建议!
我正在寻找检查项存在以最快的方式...什么是检查数据库中存在条目的最快方法?
我所有的生活,我做了这样的事情...
SELECT COUNT(`id`) FROM `table_name`
有些人不使用COUNT(id)
,但是COUNT(*)
。这是否更快?
LIMIT 1
怎么样?
P.S. id
我的意思是主键,当然。
谢谢你的建议!
在大多数情况下,COUNT(*)
是在MySQL(比COUNT(id)
更快,因为如何分组查询与COUNT()
是执行,它可能会在未来的版本中进行优化,所以两个版本都运行相同)。但是,如果你只是想找到如果至少有一个行存在,你可以使用EXISTS
简单:
(SELECT COUNT(id) FROM table_name) > 0
有点快:
(SELECT COUNT(*) FROM table_name) > 0
快得多:
EXISTS (SELECT * FROM table_name)
我可以在这些例子中使用'WHERE'x' ='abc''吗?那么LIMIT 1呢?也许它确实提高了性能? – daGrevis
您可以使用任何这些内部的任何复杂条件(WHERE,多个JOIN)。如果'id'不能为空,所有3个都是等价的(在相同的情况下它们都返回TRUE或FALSE)。 –
'EXISTS'实际上像'LIMIT 1'一样工作。当找到符合标准的行时,它会停止搜索更多。 –
如果您不担心准确性,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)
您最好使用SELECT COUNT(1)FROM table_name –
最快的方法检查表中是否存在表或快速est方法来检查数据库中的表是否有> 0行? –