Answers:
COUNT(1)
,这将是最快的方法。
因为没有人提到它:
show table status;
列出所有表以及一些其他信息,包括每个表的估计行。这就是phpMyAdmin用于其数据库页面。
该信息在MySQL 4中可用,可能在MySQL 3.23中也可用-较长时间的先前信息架构数据库。
由于投票否决,我想澄清一下显示的数字是针对InnoDB和TokuDB估算的,所以对于MyISAM和Aria(Maria)存储引擎来说绝对正确。
根据文档:
行数。某些存储引擎(例如MyISAM)存储准确的计数。对于其他存储引擎,例如InnoDB,该值是一个近似值,可能与实际值相差40%至50%。在这种情况下,请使用SELECT COUNT(*)获得准确的计数。
这也是查看MySQL上行数的最快方法,因为查询如下:
select count(*) from table;
执行全表扫描可能是非常昂贵的操作,在大型高负载服务器上可能要花费数小时。它还会增加磁盘I / O。
相同的操作可能会阻止该表进行插入和更新-这仅在外部存储引擎上发生。
InnoDB和TokuDB可以使用表锁定,但是需要全表扫描。
我们还有另一种方法来查找表中的行数,而无需在该表上运行select
查询。
每个MySQL实例都有一个information_schema数据库。如果运行以下查询,它将提供有关该表的完整详细信息,包括该表中的大约行数。
select * from information_schema.TABLES where table_name = 'table_name'\G
只是:
SELECT COUNT(*) FROM `tablename`
If you have several fields in your table and your table is huge, it's better DO NOT USE *
because of it load all fields to memory and using the following will have better performance
SELECT COUNT(1) FROM fooTable;
正如Santosh所提到的,我认为此查询是适当的快速,而不是查询所有表。
要为特定数据库中的特定表名返回数据记录数的整数结果:
select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';
count(*)
在绩效意识中使用精确的计数,则在所有答案中都非常清楚
tablename