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

Das Kopieren in die temporäre Tabelle dauert lange

Temporäre Tabellen sind möglicherweise nicht die beste Option, je nachdem, was Sie erreichen möchten ... Es kann nützlich sein, eine Tabelle mit einer gewissen Datenkonsolidierung zu erstellen, um den Umfang der nächsten Anfragen einzuschränken, aber es ist selten effizient, dies zu tun.

Außerdem kann auf temporäre Tabellen nicht mehrfach zugegriffen werden, daher wäre eine echte Tabelle erforderlich.

Die Erstellung einer Tabelle erfordert Festplattenschreibvorgänge, was viel weniger effizient ist als ein reines Auswählen im RAM. Mithilfe von Caching-Methoden können Sie das Ergebnis einer vorherigen Auswahl sehr schnell abrufen. Sie könnten diese Auswahl als FROM-Teil Ihrer Abfragen verwenden, um sie schneller zu machen als das Poolen in einer riesigen Datenbank. Aber selbst dann...

Wir entwickeln uns auf einem Datensatz von ungefähr 1 To, große Abfragen finden Produkte gemäß den Benutzerrechten (Kategorie, Geschäft, ...). Wir haben versucht, eine Tabelle für jeden Benutzer zu erstellen, die auf die Produkte verweist, für die er die Rechte hat, und Verwenden Sie dann diese Tabelle, um die Daten abzurufen, ohne dass große Where-Bedingungen erforderlich sind, aber mit SSD war es immer noch langsam. Also haben wir einfach riesigen RAM auf den Server geladen und das SELECT, das wir zum Füllen der temporären Tabellen verwendet hätten, wird für jeden Benutzer beim Login ausgeführt und dann als FROM verwendet, und alles ist perfekt.