過去には、基本的に次のようなストアド関数がありました。
IF EXISTS ( SELECT * FROM ... ) RETURN 1
SELECT の実行にはかなりの時間がかかりますが、EXISTS をラップすることで、非常に短時間で完了します。
ただし、アプリケーションには「証明書」が必要です。「1 を返した理由を 1 つ挙げてください」。クエリを次のように変更しました。
DECLARE @cert BIGINT
SELECT TOP 1 @cert = id FROM ...
RETURN @cert
ただし、これには現在、はるかに長い時間がかかります。ORDER BY
クエリには句がありません。
SQL Server は引き続きすべての行を取得し、その後最初の行を選択するだけですか? 私たちは何かを監督しましたか?同じスピードでいいんじゃない?2 番目のクエリが最初のクエリよりもはるかに時間がかかるのはなぜですか? (時間の大きさ)