sql >> Database >  >> RDS >> Mysql

Resultaten uit verschillende categorieën mixen, gerangschikt op score in MySQL

Ga naar de top 20. Als ze niet aan de vereisten voldoen, doe dan een extra zoekopdracht om de ontbrekende stukken te krijgen. Je zou in staat moeten zijn om een ​​evenwicht te vinden tussen het aantal zoekopdrachten en het aantal rijen dat elk retourneert.

Als u de top 100 heeft, voldoet deze in 90% van de gevallen aan de vereisten en is het goedkoper en sneller dan 10 afzonderlijke zoekopdrachten.

Als het SQL Server was, zou ik meer kunnen helpen...

Eigenlijk heb ik een ander idee. Voer elke 5 minuten een proces uit dat de lijst berekent en in een tabel opslaat. Laat DML tegen gerelateerde tabellen de cache ongeldig maken, zodat deze niet wordt gebruikt totdat deze opnieuw wordt ingevuld (misschien is een artikel verwijderd). Als de cache ongeldig is, zou je terugvallen op het on-the-fly berekenen... En dat zou je toch kunnen gebruiken om de cache opnieuw te vullen.

Het is misschien mogelijk om de gecachte lijst strategisch bij te werken in plaats van deze opnieuw te berekenen. Maar dat kan een echte uitdaging zijn.

Dit zou zowel moeten helpen met de querysnelheid als met het verminderen van de belasting van uw database. Het zou niet veel uit moeten maken of uw artikellijst 5 minuten verouderd is. Heck, zelfs 1 minuut zou kunnen werken.



  1. Selecteer de grootste waarde voor elke laatste 7 dagen

  2. Hoe kan ik MySQL DDL automatisch naar Oracle DDL converteren?

  3. Draaitabel met niet-kardinale waarden

  4. Hergebruik subquery van Select Expression in WHERE-Clause