计算表行数

检索表中记录计数的 MySQL 命令是什么?

304541 次浏览
SELECT COUNT(*) FROM fooTable;

将计算表中的行数。

看看 参考手册

简单来说:

SELECT COUNT(*) FROM `tablename`
select count(*) from YourTable

我们还有另一种方法可以查找表中的行数,而无需对该表运行 select查询。

每个 MySQL 实例都有 information _ schema 数据库。如果运行以下查询,它将提供有关该表的完整详细信息,包括该表中的 大概行数。

select * from information_schema.TABLES where table_name = 'table_name'\G
$sql="SELECT count(*) as toplam FROM wp_postmeta WHERE meta_key='ICERIK' AND post_id=".$id;
$total = 0;
$sqls = mysql_query($sql,$conn);
if ( $sqls ) {
$total = mysql_result($sqls, 0);
};
echo "Total:".$total;`

因为没人提过:

show table status;

列出所有表以及一些附加信息,包括每个表的估计行。这就是 phpMyAdmin 用于其数据库页面的内容。

这些信息可以在 MySQL 4中获得,可能在 MySQL 3.23太长时间之前的信息模式数据库中获得。

显示的数字是 估计的 InnoDB 和 TokuDB,但它是绝对正确的 MyISAM 和 Aria (Maria)存储引擎。

根据 文件:

一些存储引擎,如 MyISAM,存储 对于其他存储引擎(如 InnoDB) ,此值为 一个近似值,而且可能与实际值相差高达40% 在这种情况下,使用 SELECTCOUNT (*)来获得准确的 计数。

这也是在 MySQL 上查看行数的最快方法,因为查询如下:

select count(*) from table;

执行全表扫描可能是非常昂贵的操作,可能需要几个小时的大型高负载服务器。它还会增加磁盘 I/O。

同样的操作可能会阻塞表中的插入和更新——这种情况只会发生在特殊的存储引擎上。

InnoDB 和 TokuDB 可以使用表锁,但需要进行全表扫描。

必须使用 count ()返回与 指明的准则

select count(*) from table_name;

做一个

SELECT COUNT(*) FROM table;

之后可以使用 Where 指定条件

SELECT COUNT(*) FROM table WHERE eye_color='brown';

如果您的表中有多个字段,并且表很大,那么最好使用 不要使用 *,因为它将所有字段加载到内存中,并且使用以下内容将具有更好的性能

SELECT COUNT(1) FROM fooTable;

正如 Santosh所提到的,我认为这个查询的速度相当快,而不是查询所有的表。

对于特定 资料库中的特定 表名,返回数据记录数的整数 result :

select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';

如果您有一个主键或一个唯一的键/索引,那么尽可能快的方法(测试了400万个行表)

SHOW INDEXES FROM "database.tablename" WHERE Key_Name=\"PRIMARY\"

然后得到基数字段(接近于瞬时)

从0.4秒到0.0001毫秒

通过索引字段选择带有过滤器的计数非常方便

EXPLAIN SELECT * FROM table_name WHERE key < anything;