sql >> Database >  >> RDS >> Mysql

Wat zijn de beste prestaties voor het ophalen van MySQL EAV-resultaten als relationele tabel?

De beste manier om erachter te komen is natuurlijk om te testen. Het antwoord kan verschillen, afhankelijk van de grootte van de dataset, het aantal verschillende metasleutels, hun distributie (hebben alle entiteiten waarden voor alle metasleutels? of slechts voor enkele?), de instellingen van uw database server en mogelijk vele andere factoren.

Als ik moest raden, zou ik zeggen dat de kosten van de JOIN bewerkingen in optie 2 zouden kleiner zijn dan de kosten van GROUP BY en geaggregeerde functies die nodig zijn in opties 1 en 3.

Dus ik zou verwachten dat ik optie 2 sneller zou vinden dan 1 en 3.

Om Optie 4 te meten, moet u rekening houden met meer factoren, aangezien de toepassing zich op een andere server kan bevinden, dus moet rekening worden gehouden met de belasting van de twee (db- en toepassings)servers en het aantal clients dat om deze resultaten zal vragen. .

Sidenote:je hebt GROUP BY e.ID . nodig bij opties 1 en 3.



  1. MySQL hoe waarde laten verlopen?

  2. Hoe Mysql in realtime met BigQuery te synchroniseren?

  3. PDO IN() Array-instructie EN een tijdelijke aanduiding

  4. Zoekbereik van Postgres-tijdstempel optimaliseren