může být možné provést ve výběrovém dotazu (případně pomocí něčeho jako case when
i když si nejsem jistý, že je to povoleno v order by
samotná klauzule, YMMV v závislosti na DBMS), ale zřídka je dobré používat výpočty po řádcích, pokud chcete, aby se vaše databáze dobře škálovala, když se tabulky zvětšují („nemít výkon jednonohého prasete v koňských dostizích“ , jak to výmluvně říká jeden z našich DBA).
V situacích, jako je tato, jsem nastavil další (indexovaný) sloupec, aby podržel maximum a zajistil zachování integrity dat pomocí spouštěče vložení/aktualizace, který vynutí tento nový sloupec na maximum ze zbývajících tří.
Protože většina databázových tabulek se čte mnohem častěji než zapisuje, amortizují se tím náklady na výpočet v rámci všech čtení. Náklady se hradí pouze tehdy, když jsou data aktualizována a dotazy jsou oslnivě rychlé, protože objednáváte v jediném indexovaném sloupci:
select f1, f2, f3 from t order by fmax desc;