sql >> Databasteknik >  >> RDS >> Mysql

Vad är bästa prestanda för att hämta MySQL EAV-resultat som relationstabell

Det bästa sättet att ta reda på det är naturligtvis att testa. Svaret kan vara olika beroende på datasetets storlek, antalet olika meta-nycklar, deras fördelning (har alla entiteter värden för alla meta-nycklar? eller bara för ett fåtal av dem?), inställningarna för din databas server och möjligen många andra faktorer.

Om jag skulle gissa skulle jag säga att kostnaden för JOIN operationer i alternativ 2 skulle vara mindre än kostnaden för GROUP BY och aggregerade funktioner som behövs i alternativ 1 och 3.

Så jag förväntar mig att hitta alternativ 2 snabbare än 1 och 3.

För att mäta alternativ 4 måste du överväga fler faktorer eftersom applikationen kan finnas på en annan server så belastningen av de två (db och applikations)servrarna och antalet klienter som kommer att begära dessa resultat måste tas med i beräkningen .

Sidenote:du behöver GROUP BY e.ID i alternativ 1 och 3.



  1. Leverera julklappar:Tomtens datamodell

  2. Dela upp strängen i flera rader i Oracle

  3. Hur man väljer poster från de senaste 24 timmarna i PostgreSQL

  4. MySQL, Få användarrankning