sql >> Databasteknik >  >> RDS >> Mysql

Blanda olika kategorier resultat, sorterade efter poäng i MySQL

Gå och hämta topp 20. Om de inte uppfyller kraven, gör en ytterligare fråga för att få de saknade bitarna. Du bör kunna hitta en balans mellan antalet frågor och antalet rader som varje returnerar.

Om du fick topp 100 kanske det uppfyller kraven 90 % av tiden och skulle vara billigare och snabbare än 10 separata frågor.

Om det var SQL Server skulle jag kunna hjälpa mer...

Egentligen har jag en annan idé. Kör en process var 5:e minut som beräknar listan och cachar den i en tabell. Gör att DML mot relaterade tabeller ogiltigförklarar cachen så att den inte används förrän den har fyllts på igen (kanske en artikel har tagits bort). Om cachen är ogiltig, skulle du falla tillbaka till att beräkna den i farten... Och skulle kunna använda det för att fylla på cachen igen.

Det kan vara möjligt att strategiskt uppdatera den cachade listan istället för att beräkna om den. Men det kan vara en riktig utmaning.

Detta bör hjälpa både med frågehastighet och minska belastningen på din databas. Det borde inte spela så stor roll om din artikellista är 5 minuter inaktuell. Fan, till och med 1 minut kan fungera.



  1. SQL:UPPDATERA från ett komplext urval

  2. Kan inte ansluta till lokal MySQL-server i docker-compose

  3. Hur man tar bort rätt stoppning på dagnamnet i Oracle

  4. MacOS Kan inte starta MySQL Server