読者です 読者をやめる 読者になる 読者になる

ソートしていいなら・・・

あと 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