小编lun*_*unr的帖子

MySQL COUNT(*) 性能

我有一个超过 15m 行的表。我需要总行数。所以:

SELECT COUNT(*) FROM thetable;
Run Code Online (Sandbox Code Playgroud)

大约需要 50 秒才能完成。解释给了我Select tables optimized away。我想这意味着只有使用索引才能找到结果,那为什么还需要这么长时间?以下是有关id列上索引的一些信息(不可为空):

索引类型:BTREE(聚集)

基数:14623100

唯一:是

如何提高此查询的性能?谢谢。

注:数据库为 MySQL 5.7.1,使用 InnoDB 引擎。

编辑:

创建语句:

CREATE TABLE `properties` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `address` varchar(255) DEFAULT NULL,
  `locality` varchar(50) DEFAULT NULL,
  `latitude` decimal(13,9) DEFAULT NULL,
  `longitude` decimal(13,9) DEFAULT NULL,
  `state` varchar(10) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  .....
  PRIMARY KEY (`id`),
  KEY `index_properties_on_address` (`address`),
  KEY `index_properties_on_latitude` (`latitude`),
  KEY `index_properties_on_longitude` (`longitude`),
  KEY `index_properties_on_state` …
Run Code Online (Sandbox Code Playgroud)

mysql performance count query-performance

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

count ×1

mysql ×1

performance ×1

query-performance ×1