我有一个大表(大约150 M行),如果我尝试在其上运行一个简单的select count(*),那么mysql可以工作大约一个小时,然后抛出一个错误。
我假设这不是由于mysql的限制,而是我身边的问题,但我不知道从哪里开始寻找。任何想法?
表是innodb linux上的mysql 5.5答案 0 :(得分:2)
你可以像这样的表状态检查它
SHOW TABLE STATUS FROM db_name LIKE 'table_name';
你看到行列......
答案 1 :(得分:1)
您可以使用count(1) instead of count(*)
尝试::
Select count(1) from my_table
答案 2 :(得分:0)
加快像这样的查询的最简单方法是使用covering index。这将允许您扫描所需的行,但每行需要更少的I / O字节(因为您只扫描每行的数据的一部分,而不是整行)。此外,如果索引的排序方式与查询方式相同,则可以避免排序成本,并且可以扫描的行数少得多。
答案 3 :(得分:0)
您可以使用Information Schema。
SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = YOUR_DB_NAME和table_name = YOUR_TABLE_NAME