sql >> Databáze >  >> RDS >> Mysql

Jak optimalizovat výkon COUNT(*) na InnoDB pomocí indexu

Od MySQL 5.1.6 můžete používat Plánovač událostí a pravidelně vkládejte počet do tabulky statistik.

Nejprve vytvořte tabulku, která bude obsahovat počet:

CREATE TABLE stats (
`key` varchar(50) NOT NULL PRIMARY KEY,
`value` varchar(100) NOT NULL);

Poté vytvořte událost pro aktualizaci tabulky:

CREATE EVENT update_stats
ON SCHEDULE
  EVERY 5 MINUTE
DO
  INSERT INTO stats (`key`, `value`)
  VALUES ('data_count', (select count(id) from data))
  ON DUPLICATE KEY UPDATE value=VALUES(value);

Není to dokonalé, ale nabízí samostatné řešení (žádný cronjob nebo fronta), které lze snadno přizpůsobit tak, aby běželo tak často, jak je požadována čerstvost počtu.



  1. Správný způsob implementace jedinečného omezení, které umožňuje více hodnot NULL v SQL Server

  2. 3 způsoby, jak naformátovat číslo jako procento v PostgreSQL

  3. Jak získat číselné typy z MySQL pomocí PDO?

  4. Jak ADDTIME() funguje v MariaDB