1

私はT-SQLが初めてです。私の知る限り、SELECT * は悪い習慣と見なされているため、コードで SELECT * を使用することは常に避けています。

しかし、私の同僚は、存在チェックを行うには SELECT * を使用しても問題ないと言いました。例えば、

IF EXISTS (SELECT * FROM tb_test WHERE ResourceType = 2)
BEGIN
    --do something
END

「MSSQL サーバーはステートメントが存在チェックを行っていることを認識しているため、オプティマイザーは正しいことを行います。」彼は言った。

SELECT * を使用して存在チェックを行う場合、パフォーマンスのオーバーヘッドはありませんか??

前もって感謝します。

4

1 に答える 1

8

あなたの同僚は正しい1です。オプティマイザは、列データを実際に取得する必要がないことを認識しています。

しかし、一般的SELECT *は避けるべきだということも正しいです。EXISTSチェックは、ルールを証明する例外です。

1私の経験では、SOでは少し珍しいです。

于 2013-09-16T07:07:14.517 に答える