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

daG*_*vis 6 mysql performance exists count

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

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

SELECT COUNT(`id`) FROM `table_name`
Run Code Online (Sandbox Code Playgroud)

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

怎么样LIMIT 1

PS id当然,我指的是主键.

谢谢你的建议!

ype*_*eᵀᴹ 7

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

简单:

( SELECT COUNT(id) FROM table_name ) > 0
Run Code Online (Sandbox Code Playgroud)

快一点:

( SELECT COUNT(*) FROM table_name ) > 0
Run Code Online (Sandbox Code Playgroud)

快多了:

EXISTS (SELECT * FROM table_name)
Run Code Online (Sandbox Code Playgroud)


Chr*_* G. 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)