sql >> Databáze >  >> RDS >> Mysql

Míchání výsledků různých kategorií, seřazených podle skóre v MySQL

Získejte 20 nejlepších. Pokud nesplňují požadavky, proveďte další dotaz, abyste získali chybějící kusy. Měli byste být schopni najít určitou rovnováhu mezi počtem dotazů a počtem řádků, které každý vrátí.

Pokud máte 100 nejlepších, mohlo by to splňovat požadavky v 90 % případů a bylo by to levnější a rychlejší než 10 samostatných dotazů.

Kdyby to byl SQL Server, mohl bych pomoci více...

Vlastně mám jiný nápad. Každých 5 minut spusťte proces, který vypočítá seznam a uloží jej do mezipaměti v tabulce. Provedením DML proti souvisejícím tabulkám zrušíte platnost mezipaměti, takže nebude použita, dokud nebude znovu naplněna (možná byl smazán článek). Pokud je mezipaměť neplatná, vrátíte se k jejímu výpočtu za běhu... A stejně byste to mohli použít k opětovnému naplnění mezipaměti.

Může být možné strategicky aktualizovat seznam uložený v mezipaměti spíše než jej přepočítávat. Ale to by mohla být skutečná výzva.

To by mělo pomoci s rychlostí dotazů a snížením zatížení vaší databáze. Pokud je váš seznam článků 5 minut zastaralý, nemělo by příliš záležet. Sakra, může fungovat i 1 minuta.



  1. Propojení tabulek mezi dvěma modely v Cakephp

  2. MYSQL – Porovnejte TEĎ () a datum v pařížském časovém pásmu v požadavku

  3. Funkce USER v Oracle

  4. mySQL načte data místního vstupního souboru nesprávný formát čísla