小编gil*_*ilm的帖子

使用索引时加速 COUNT(*)

我有一个与此类似的表(简化):

CREATE TABLE books (
    id INT AUTO_INCREMENT,
    category INT NOT NULL,
    PRIMARY KEY (id),
    KEY (category)
);
Run Code Online (Sandbox Code Playgroud)

这张桌子已经结束了10,000,000 rows,大约在12 categories。所以每个类别的平均值为833,333 books.

查询计数时:

SELECT COUNT(*) FROM books WHERE category=1;
Run Code Online (Sandbox Code Playgroud)

即使它在查询时使用索引,这也需要很长时间才能完成(几秒钟)。您将如何优化它?

之前我每次插入书籍时都会增加一个数字(插入一个涉及类别->书籍数量的表。)但是我们的代码很复杂,很多地方插入或删除书籍。我知道可以用 解决这个问题EVENTS,但我在问也许我错过了一个 MySQL 功能。

mysql performance index count mysql-5.5 query-performance

5
推荐指数
1
解决办法
7660
查看次数

标签 统计

count ×1

index ×1

mysql ×1

mysql-5.5 ×1

performance ×1

query-performance ×1