Zde je nápad. Můžete přesunout drahé operace na aktualizaci, když obchodník s potravinami vloží/aktualizuje nové nabídky, spíše než když koncový uživatel vybírá data k zobrazení. Může se to zdát jako nedynamický způsob zpracování dat třídění, ale může to zvýšit rychlost. A jak víme, vždy existuje kompromis mezi výkonem a dalšími faktory kódování.
Vytvořte tabulku, která bude obsahovat další a předchozí pro každou nabídku a každou možnost řazení. (Alternativně to můžete uložit do tabulky nabídek, pokud budete mít vždy tři možnosti řazení – rychlost dotazů je dobrým důvodem k denormalizaci vaší databáze)
Takže byste měli tyto sloupce:
- Typ řazení (Netříděno, Cena, Třída a Popis ceny)
- ID nabídky
- Předchozí ID
- Další ID
Při dotazu na podrobné informace pro stránku s podrobnostmi nabídky z databáze budou součástí výsledků NextID a PrevID. Budete tedy potřebovat pouze jeden dotaz pro každou stránku podrobností.
Pokaždé, když je nabídka vložena, aktualizována nebo odstraněna, budete muset spustit proces, který ověří integritu/přesnost tabulky typu řazení.