Ist es möglich, eine indizierte Sicht in MySQL zu haben?
-
04-07-2019 - |
Frage
Was ich suche ist eine Möglichkeit, einen Index über einen Blick zu haben, aber haben die Tabelle, die nicht indizierten bleiben betrachtet wird. Indexing verletzt den Schreibprozess und diese Tabelle geschrieben recht häufig (bis zu dem Punkt, wo die Indizierung alles zu einem Schleichen verlangsamt). Doch dieser Mangel an einem Index macht meine Fragen sehr langsam.
Lösung
Ich glaube nicht, MySQL materialisierten Ansichten unterstützt das ist, was man braucht, aber es würde Ihnen nicht ohnehin in dieser Situation helfen. Ob der Index für die Sicht oder auf der zugrunde liegende Tabelle ist, wäre es muß bei einer Aktualisierung der zugrunde liegenden Tabelle zu einem bestimmten Zeitpunkt geschrieben und aktualisiert werden, so wäre es immer noch die Schreibgeschwindigkeit zu Problemen führen.
Ihre beste Wette wäre wahrscheinlich Sichtstabellen zu erstellen, die in regelmäßigen Abständen aktualisiert.
Andere Tipps
Haben Sie darüber nachgedacht, Ihre Transaktionsverarbeitung von Daten aus Ihren analytischen Verarbeitung von Daten abstrahiert, so dass sie beide spezialisiert sein können ihre individuellen Anforderungen gerecht zu werden?
Die Grundidee ist, dass Sie eine Version der Daten, die regelmäßig geändert wird, würde dies die Transaktionsverarbeitung Seite sein und erfordert schwere Normalisierung und Licht Indizes, so dass Schreibvorgänge schnell sind. Eine zweite Version der Daten für die analytische Verarbeitung strukturiert und neigt dazu, für die schnelle Berichterstattung Operationen weniger normalisiert und stärker indiziert zu sein.
Daten um analytische Verarbeitung strukturiert ist im Allgemeinen um die Würfel Methodik der Data-Warehousing entwickelt, von Faktentabellen zusammengesetzt sind, dass die Seiten des Würfels und Dimensionstabellen darstellen, die die Kanten des Würfels darzustellen.
Flexviews unterstützt materialisierten Ansichten in MySQL durch Änderungen an zugrunde liegenden Tabellen-Tracking und Aktualisieren der Tabelle der Funktionen als materialisierte Ansicht. Dieser Ansatz bedeutet, dass durch die Ansicht unterstützt SQL ist ein bisschen beschränkt (wie die Änderung Logging Routinen, um herauszufinden haben, welche Tabellen es sollte für Änderungen verfolgen), aber soweit ich weiß, das ist in der Nähe Sie materialisierte Ansichten in MySQL bekommen .
Möchten Sie nur eine indizierte Sicht? Es ist unwahrscheinlich, dass mit nur einem Index in eine Tabelle zu schreiben wäre, dass störend. Gibt es keinen Primärschlüssel?
Wenn jeder Datensatz groß ist, können Sie die Leistung verbessern, indem sie herauszufinden, wie es zu verkürzen. Oder verkürzen die Länge des Index, den Sie benötigen.
Wenn dies ein Nur-Schreib-Tabelle (dh Sie brauchen keine Aktualisierungen zu tun), kann es in MySQL tödlich sein Archivierung zu starten, oder auf andere Weise Löschen von Datensätzen (und Indexschlüssel), erfordern den Index Füllen zu starten (Wiederverwendung) Schlitze von gelöschten Schlüssel, und nicht nur neue Indexwerte angehängt wird. Eingängig, aber du bist besser dran mit einem größeren Tisch in diesem Fall.