COUNTid查询花费的时间太长,哪些性能增强功能可能会有所帮助?

问题描述

| 我有一个查询超时问题。当我做一个:
SELECT COUNT(id) AS rowCount FROM infoTable;
在我的程序中,我的JDBC调用在2.5分钟后超时。 我没有很多数据库管理专业知识,但是我目前负责支持遗留数据库。在此mysql数据库中,有一个InnoDB表:
+-------+------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra          |
+-------+------------+------+-----+---------+----------------+
| id    | bigint(20) | NO   | PRI | NULL    | auto_increment | 
| info  | longtext   | NO   |     |         |                | 
+-------+------------+------+-----+---------+----------------+
它当前具有5,192,540的高id,这是表中的大约行数。有些信息文本超过1M,有些很小。每天大约增加3000行。机器具有大量可用磁盘空间,但没有很多额外的内存。尽管我希望清除一些已经过时的旧数据,但读取行并偶尔对其进行修改,但很少删除它们。 我在一个较小的测试数据库中手动尝试了相同的查询,该数据库具有1,492,669行,安装在具有较少磁盘空间的类似计算机上,耗时9.19秒。 我在一个较小的测试数据库上手动尝试了相同的查询,该数据库有98,629行,花了3.85秒。然后,我向id添加了一个索引:
create index infoTable_idx on infoTable(id);
并且随后的COUNT花费了4.11秒,因此在这种情况下添加索引似乎没有帮助。 (就踢球而言,我在上述中型数据库上执行了相同的操作,访问时间从9.2秒增加到9.3秒。) 知道这样的查询要花多长时间吗?此查询期间锁定了什么?如果有人在我的程序选择时添加数据会怎样? 感谢您的任何建议, 伊兰     

解决方法

        您可以尝试执行以下解释语句,可能会更快一些:
mysql> EXPLAIN SELECT id FROM table;
可能会或可能不会产生更快的结果,请查找
rows
字段。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...