我有一个与此类似的表(简化):
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 功能。