ソートしていいなら・・・
あと SQL Server の独自拡張使っていいなら・・・
SELECT MAX(T.n) FROM (SELECT TOP 10 n FROM Input ORDER BY n) T
激速。どれくらい早いかというと、上の SQL が 1 万件のデータに対してそれぞれ 36 秒、26 秒かかるのに対して、このバージョンは 1 秒未満で返ってくるくらいに高速。
クエリの実行プラン見ると、相対コストが 78 : 22 : 0・・・0 てw
ちなみにソートをしない方法の早い方とのみ比較すると、99 : 1
ただし、この方法は TOP 10 みたいに n を固定しなきゃいけないんだよねー
追記:
どうやら、括弧で囲めば出来るっぽい。
SELECT MAX(T.n) FROM (SELECT TOP (@n) n FROM Input ORDER BY n) T