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

Was ist die beste Leistung zum Abrufen von MySQL EAV-Ergebnissen als relationale Tabelle?

Der beste Weg, das herauszufinden, wäre natürlich ein Test. Die Antwort kann unterschiedlich sein, abhängig von der Größe des Datensatzes, der Anzahl verschiedener Meta-Schlüssel, ihrer Verteilung (haben alle Entitäten Werte für alle Meta-Schlüssel? oder nur für einige wenige?), den Einstellungen Ihrer Datenbank Server und möglicherweise viele andere Faktoren.

Wenn ich raten müsste, würde ich sagen, dass die Kosten für JOIN Operationen in Option 2 wären geringer als die Kosten von GROUP BY und Aggregatfunktionen, die in den Optionen 1 und 3 benötigt werden.

Ich würde also erwarten, Option 2 schneller zu finden als 1 und 3.

Um Option 4 zu messen, müssen Sie mehr Faktoren berücksichtigen, da sich die Anwendung möglicherweise auf einem anderen Server befindet, sodass die Lasten der beiden Server (Datenbank und Anwendung) und die Anzahl der Clients, die diese Ergebnisse anfordern, berücksichtigt werden müssen .

Nebenbemerkung:Sie benötigen GROUP BY e.ID in den Optionen 1 und 3.