Mysql计数与Mysql选择,哪一个更快?

Mysql计数与Mysql选择,哪一个更快?,mysql,select,count,Mysql,Select,Count,如果我想检查一个名称,我想看看users表下的“username”列中有多少行/名称。让我们说几千。。。十万,我应该使用: 伯爵(姓名) 计数(*)或 从用户名为'name'的用户中选择用户名 哪个更合适?或者他们会在速度/响应方面给出相同的结果 编辑: 谢谢各位,我找到了答案,count()肯定会更快 这个问题对吗 SELECT COUNT( username ) FROM users WHERE `username` = 'tim' 如果有很多同名的用户(很多行而不是一行),Sele

如果我想检查一个名称,我想看看users表下的“username”列中有多少行/名称。让我们说几千。。。十万,我应该使用:

  • 伯爵(姓名)

  • 计数(*)或

  • 从用户名为'name'的用户中选择用户名

哪个更合适?或者他们会在速度/响应方面给出相同的结果

编辑:

谢谢各位,我找到了答案,count()肯定会更快

这个问题对吗

SELECT COUNT( username )
FROM users
WHERE `username` = 'tim' 

如果有很多同名的用户(很多行而不是一行),Select语句会产生更多的流量。

COUNT(name)或COUNT(*)会更快一些,因为它们不需要返回太多数据。 (参见Andrew Shepherd关于这两种计数形式之间语义差异的回复,以及COUNT()。重点是“检查姓名”,这些差异与以下技巧关系不大:除了计数,您还可以使用

SELECT username FROM users where username = 'name' LIMIT 1;

这将具有检查(是否存在)名称的效果,但在找到一个名称后立即返回。

尝试所有三种方法,并使用最好的预制件。如果它们都是相同的,这是一个过早优化的例子,你可能只需要使用你觉得最舒服的一个,然后在必要时调整它。如果你迷信,你也可以考虑使用计数(1),我已经被告知也能发挥性能优势。

我想说的是,你应该使用一个selecttop1,但是你检查的用户名可能是一个索引的唯一列,所以理论上,考虑到只能有一个,计数也应该执行

COUNT(*)
COUNT(Name)
可能产生不同的值
COUNT
将不包括空值,因此,如果名称的任何实例等于NULL,则不会对其进行计数


COUNT(*)
的性能也将优于
COUNT(Name)
。通过指定
COUNT(*)
您可以让优化器自由地使用它想要的任何索引。通过指定
COUNT(Name)
您强制查询引擎使用表,或者至少使用包含Name列的索引。

COUNT(*)会更快,因为MySQL引擎可以自由选择要计数的索引。

好的,用户名不应超过5。所以,如果我们在表中插入新数据,我会检查名称是否超过50个字符。。。嗯,我试过使用count(),但给我错误lol好的,我将使用count(*)而不是count(column_name)@Andrew Shepherd nice one先生,尽管如果您可以添加一些关于性能的内容以及可能重复的