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

Trigger als Alternative zu SQL-Aggregatfunktionen verwenden?

Theoretisch kann ein Trigger eine Zusammenfassungstabelle genau aktualisieren, solange:

  • Sie deaktivieren den Auslöser nicht
  • Sie aktualisieren die Übersichtstabelle nicht direkt
  • Sie nehmen keine Änderungen an den Quelldaten durch TRUNCATE TABLE vor (wie Sie bemerkt haben)

Auch:

  • Sie müssen die Übersichtstabelle mit einem korrekten Anfangswert füllen
  • Sie müssen InnoDB sowohl für die Quelltabelle als auch für die Zusammenfassungstabelle verwenden, daher sind Aktualisierungen atomar

Das Pflegen einer Übersichtstabelle ist ein Beispiel für Denormalisierung . Wie bei jeder Denormalisierung riskiert dies Datenanomalien. Sie sind für die Aufrechterhaltung der Datenintegrität verantwortlich; Die Datenbank kann Ihnen dabei nur begrenzt helfen.

Ich empfehle Ihnen, die Übersichtstabelle von Zeit zu Zeit zu überprüfen (z. B. stündlich kann ausreichen), um sicherzustellen, dass sie nicht aus dem Takt geraten ist, und sie gegebenenfalls zu korrigieren. Es liegt an Ihnen, dies zu tun, da die Datenbank dies nicht für Sie überprüfen kann.