반응형
NOCOUNT는 기본적으로 서버 수준에서 비활성화(OFF)됩니다. 이는 기본적으로 서버가 실행된 SQL 쿼리의 영향을 받은 행 수를 클라이언트에 전송한다는 의미입니다. 이는 대부분의 경우 아무도 이 정보를 읽지 않기 때문에 쓸모가 없습니다.
이 기능을 비활성화하면 일부 네트워크 트래픽이 절약되고 저장 프로시저 및 트리거의 실행 성능이 향상됩니다. 따라서 쿼리가 처리되기 전에 PROCEDURE 및 TRIGGER 정의 시작 부분에 SET NOCOUNT ON을 정의하는 것이 좋습니다.
이 규칙은 NOCOUNT가 설정되지 않거나 PROCEDURE(또는 TRIGGER) 정의의 시작과 SET, IF 또는 DECLARE가 아닌 첫 번째 문 사이에 OFF로 설정된 경우 문제를 발생시킵니다.
좋은 예:
CREATE PROCEDURE dbo.MyProc(@debug INT)
AS
BEGIN
DECLARE @var INT;
IF @debug = 0
BEGIN
SET NOCOUNT ON;
END
SELECT COUNT(*) FROM MY_TABLE
END;
또는
CREATE TRIGGER MyTrigger ON MyTable
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
[...]
END;
반응형