【问题标题】:Is there have the best way to count all rows in table mysql? [duplicate]有没有最好的方法来计算表 mysql 中的所有行? [复制]
【发布时间】:2014-09-02 08:28:51
【问题描述】:

我想尽可能快地计算表中与我的条件匹配的所有行。
所以,我有四个 SQL,希望你解释所有这些,每个 SQL 有什么不同?
哪个查询时间和服务器性能最快或最好?
或者它有另一种方法可以比这些更好。谢谢。

select count(*) as total from table where my_condition
select count(1) as total from table where my_condition
select count(primary_key) as total from table where my_condition

select * from table where my_condition
//and then use mysql_num_rows()

【问题讨论】:

  • 前三个中的任何一个都应该优化我的 MySQL 以提供相同的性能。 last 效率非常低,因为它需要 MySQL 准备所有要返回的数据
  • 前三个都是相当的。最后一个可能是性能噩梦,因为所有数据都需要传回应用程序。

标签: php mysql sql


【解决方案1】:

首先,不要考虑做最后一个!它的字面意思是选择我在数据库中的所有数据,将其返回给客户端,客户端将对其进行计数!

其次,你需要明白,如果你按列名计数,count不会返回空值,例如:select count(column1) from table_name;如果存在column1为null的行,则不计入,请注意。

select count(*)、select count(1)、select count(primary_key) 都是相等的,你看不出有任何区别。

【讨论】:

  • 第四次出现技术错误。它确实迫使 mysql 做很多不必要的工作,但是在您发出 fetch() 调用之前,不会传输实际的行数据。这并不意味着 mysql 不会开始缓冲服务器上的一些数据,因此它已准备好进行实际提取,以及复制到临时表等。但在您实际执行该 fetch 调用之前,它不会向客户端发送除元数据之外的任何内容。
  • 感谢您的澄清,我不知道。很好的信息。
猜你喜欢
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多