我们在MySql DB中有一个大小约为35千兆字节的表
我运行了一个简单的查询
select count(*) from table_name
此查询需要超过10分钟,然后连接断开,为什么需要这么长时间
我们的表架构中没有主键,这是原因吗?
如果您需要我可以提供的任何其他详细信息
由于
答案 0 :(得分:3)
这可能是InnoDB表。由于InnoDB支持事务,因此表永远不会处于静态状态,部分表始终可以更改。 count()必须遍历并计算每条记录,这就是为什么它需要这么长时间。即使这样,它也更多地是一种估计,取决于桌面上的活动。
快速获取InnoDB表的计数方法是查看唯一索引的基数(即自动增量字段的主键)。您可以通过运行“SHOW INDEX FROM table_name”命令来查看此信息。基数是该索引中唯一的值数。对于唯一索引,这是记录数。
答案 1 :(得分:-1)
在mssql中,我会这样做
Select count(*) from table_name(nolock)
必须有一种方法可以在mysql中读取未提交的内容..