【问题标题】:MYSQL Best Row Count Method - Large DatabaseMYSQL 最佳行计数方法 - 大型数据库
【发布时间】:2012-10-01 04:32:46
【问题描述】:

我有一个包含超过 400,000 行的 MySQL 数据库。对于我的基于 Web 的脚本,我有一个页面功能。确定应该有多少页的步骤之一是返回表中的行数。

假设表名是data

我想知道只返回数据库中的行数的最有效方法是什么。

我显然可以这样做:

$getRows = mysql_query("SELECT id FROM `data`") or die(mysql_error());
$rows = mysql_num_rows($getRows);

所以它只选择 id。但是,这仍然会选择 400,000 + ID 的数据并将其存储在堆栈中(我认为?),并且使用诸如查找表状态之类的方法似乎效率较低。我只是不是 100% 确定如何使用表格状态方法。

反馈和意见会很棒。谢谢大家!

【问题讨论】:

  • @itachi SO TRUE!..and btw mysql_ is being depreciated......red box.....pdo.....guide....
  • PHP 会用新的查询方法代替它吗?
  • 是的,请谷歌 mysqlmysqlimysql pdo 了解更改。或在 Stackoverflow 中搜索 mysql,通常对问题的第一条评论引用了 mysql_ 的不当使用

标签: php mysql database


【解决方案1】:

使用count

SELECT count(id) FROM data

有关获取计数的更多信息,请参阅 this question。确保您的 id 在您的表中有索引。


现在,要找到 unique 行的数量,您可以这样做

SELECT count(distinct(id)) FROM data


或者,如果您想找到最高 ID 编号(如果您的 ID 是自动增量且唯一的),您可以尝试 SELECT max(id) FROM data 返回当前的最高 ID 编号。


我强烈推荐这个网站来学习这些基本功能: http://sqlzoo.net/

【讨论】:

  • 替代方式虽然有缺陷。如果某些数据被删除怎么办?虽然赞成第一部分。
  • 是的,数据不够可靠,无法按最高 ID 计算。会有“差距”。谢谢
【解决方案2】:

400,000 行根本不算多。保持简单,然后做:

select count(*) 
from `data`

【讨论】:

  • 如果我每页显示 15 个结果,因为我有一个列出所有页面(超过 26666)的“跳转到页面”功能。 HTML 绘图很繁重。
  • 是 2666 还是 266666666666 没关系。如果要减少数字,则将 15 变为 50 或 100。将页码作为 get 变量传递并检索数据。
  • 我的意思是,在 web 端,HTML 绘制 26666666 选项标签比 2666 需要更长的时间。感谢您的帮助。
  • 我不知道你为什么在谈论 HTML,我以为这是一个 SQL 问题...
  • 为什么要输出所有的数字?只放相关的。
猜你喜欢
  • 2011-10-19
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2016-10-10
  • 2013-12-04
相关资源
最近更新 更多