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

Große Anzahl von Spalten in MySQL-Datenbank

Ok, ich verstehe Ihr Dilemma, und in der (vermutlich kurzzeitigen) Abwesenheit eines Datenbankexperten werde ich Ihnen meine Meinung sagen.

Brechen Sie Ihre Daten aus Gründen der Vernunft auf. Angenommen, Sie speichern Informationen über Personen. Sie brauchen keine 200 Spalten in 1 Tabelle. Sie sollten sie aufteilen und mehrere Spalten in vielen Tabellen haben. zB

tblGeneralCharacteristics:
 - colEyeColor
 - colHairColor
 - colHeight
 - colWeight

tblInterests:
 - colFaveColor
 - colFaveSport

tblRelationships
 - colMother
 - colFather
 - colBrother
 - colSister

Dieser Weg ist viel besser. Rechnerisch bezweifle ich, dass es viel ausmacht. Offensichtlich erhalten Sie mit jeder Abfrage weniger Daten zurück, daher kann es bei einigen Berichten (bei denen Sie möglicherweise nicht alle Daten abrufen oder alle Daten durchforsten müssen) schneller sein (obwohl dies nicht der Fall sein sollte, wenn Sie die Datenbank richtig indizieren). kein Problem).

Zum nächsten Thema. Das ist die Anzahl der Datensätze in der Datenbank. Wenn 10.000 zu groß werden, ist es an der Zeit, mit dem Caching zu beginnen.

Nun, soweit es mich betrifft, gibt es keinen richtigen oder falschen Weg, Daten zwischenzuspeichern. Was Sie brauchen, ist was Sie brauchen. In Ihrer Frage haben Sie beispielsweise erwähnt, dass Sie zwischen Januar und März 2012 durchschnittliche Höhen für das Gewicht für Datensätze erhalten möchten. Nun ... Sie könnten ein Cron-Skript schreiben, das die durchschnittlichen Höhen für das Gewicht für alle in diesem Monat eingegebenen Datensätze berechnet und speichert irgendwo in einer anderen Tabelle. Wenn Sie dann Ihren Bericht erstellen, brauchen Sie nur die Werte für Jan, Feb und März zu erhalten und sie zu durchschnittlichen ... das ist viel einfacher. Anstatt eine rechnerische Abfrage für möglicherweise Tausende von Zeilen durchzuführen, führen Sie eine Cron-Abfrage (die egal wie lange sie dauert) für ein paar hundert Zeilen durch, und der eigentliche Bericht fragt dann nur 3 Zeilen ab.

Ein weiterer Trick ist, je mehr Berechnungen Sie in SQL durchführen können, desto besser. Wenn Sie Felder/Datensätze mitteln oder etwas summieren möchten, senden Sie es mit Ihrer SQL-Abfrage. Der SQL-Server führt die Berechnung durch und gibt das Ergebnis zurück, anstatt Ihnen riesige Datenmengen zum Durchsuchen zurückzugeben. Ich weiß, dass dies nicht immer einfach/nützlich ist, aber je mehr Sie SQL dazu bringen können, desto besser.

Hoffe das hilft. Wie ich schon sagte, bin ich sicher, dass ein Datenbankexperte darauf brennt, Ihnen ein paar aufschlussreichere Ratschläge zu geben. :)