かもしれません 選択クエリで実行できる(おそらくcase when
のようなものを使用する) order by
で許可されているかどうかはわかりませんが 句自体、DBMSに応じてYMMV)が、データベースを適切に拡張してテーブルを大きくしたい場合(「競馬で片足の豚のパフォーマンスがない」場合は、行ごとの計算を使用することはめったにありません」 、DBAの1つが雄弁に言っているように)
このような状況では、最大値を保持する追加の(インデックス付き)列を設定し、挿入/更新トリガーを使用してその新しい列を他の3つの最大値に強制することにより、データの整合性が維持されるようにします。
ほとんどのデータベーステーブルは書き込まれるよりもはるかに頻繁に読み取られるため、これにより、すべての読み取りで計算のコストが償却されます。単一のインデックス付き列で注文しているため、データが更新され、クエリが目がくらむほど速くなる場合にのみ、コストが負担されます。
select f1, f2, f3 from t order by fmax desc;