Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So optimieren Sie die Leistung von COUNT(*) auf InnoDB mithilfe von index

Ab MySQL 5.1.6 können Sie den Event Scheduler und fügen Sie die Zählung regelmäßig in eine Statistiktabelle ein.

Erstellen Sie zuerst eine Tabelle für die Zählung:

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

Erstellen Sie dann ein Ereignis, um die Tabelle zu aktualisieren:

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);

Es ist nicht perfekt, aber es bietet eine eigenständige Lösung (kein Cronjob oder Warteschlange), die leicht angepasst werden kann, um so oft wie die erforderliche Aktualität der Zählung auszuführen.