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

Best Practices mit historischen Daten in der MySQL-Datenbank

Es ist ein häufiger Fehler, sich über "große" Tabellen und Leistung Gedanken zu machen. Wenn Sie Indizes für den Zugriff auf Ihre Daten verwenden können, spielt es keine Rolle, ob Sie 1000 von 1000000 Datensätzen haben - zumindest nicht so, dass Sie sie messen können. Das von Ihnen erwähnte Design wird häufig verwendet. Es ist ein großartiges Design, bei dem Zeit ein wichtiger Teil der Geschäftslogik ist.

Wenn Sie beispielsweise wissen möchten, wie hoch der Preis eines Artikels war, als der Kunde die Bestellung aufgegeben hat, ist es bei weitem die einfachste Lösung, Produktdatensätze zu durchsuchen, bei denen valid_from order_date ist.

Dies ist nicht immer der Fall – wenn Sie die Daten nur zu Archivierungszwecken aufbewahren, kann es sinnvoller sein, Archivtabellen zu erstellen. Sie müssen jedoch sicher sein, dass die Zeit wirklich ist nicht Teil der Geschäftslogik, da sonst das Durchsuchen mehrerer Tabellen erheblich sein wird - stellen Sie sich vor, Sie müssen jedes Mal entweder die Produkttabelle ODER die Tabelle product_archive durchsuchen, wenn Sie den Preis eines Produkts zum Zeitpunkt der Bestellung herausfinden möchten .