데이터베이스/Mssql 10

SCOPE_IDENTITY() 함수란? – SQL Server에서 마지막으로 삽입된 ID값 안전하게 가져오기

데이터베이스에 새로운 레코드를 삽입한 직후, 그 레코드의 ID 값을 가져오는 일은 흔하면서도 중요한 작업입니다. 특히 외래 키로 연결된 다른 테이블에 데이터를 추가하거나 삽입된 ID 값을 기준으로 후속 로직을 처리할 때 반드시 필요하죠. SQL Server에서는 이를 위해 여러 함수를 제공하는데, 그중 가장 안전하고 권장되는 방법이 바로 SCOPE_IDENTITY()입니다.✅ SCOPE_IDENTITY()란?SCOPE_IDENTITY()는 현재 세션과 현재 스코프(scope) 내에서 마지막으로 생성된 IDENTITY 열의 값을 반환합니다.즉, 어떤 프로시저나 배치 내에서 INSERT 문을 실행한 직후, 그로 인해 생성된 ID 값을 정확하게 얻을 수 있습니다. 트리거나 다른 병렬 프로세스에서 발생한 ID ..

프로시저에서 로그인 정보 누락 시 유의사항: 아이디가 NULL 또는 공백일 때 발생하는 전체 테이블 스캔

1. 로그인 유효성 체크, 간단해 보여도 성능 함정이 있다웹 애플리케이션이나 내부 시스템에서 사용자 인증 로직은 대부분 **저장 프로시저(Stored Procedure)**를 통해 처리됩니다. 로그인 시 사용자 ID와 패스워드를 입력받아 사용자 정보를 조회하는 로직이죠.하지만 여기서 흔히 간과되는 치명적인 성능 문제가 하나 있습니다. 바로 **입력된 아이디가 NULL이거나 공백(Empty String)**인 경우입니다.2. 문제 예시: NULL 또는 공백으로 인한 전체 테이블 스캔다음과 같은 프로시저 코드를 가정해봅시다.CREATE PROCEDURE sp_login @user_id VARCHAR(50), @password VARCHAR(50)ASBEGIN SELECT user_id, us..

OPTION (OPTIMIZE FOR UNKNOWN) 완벽 정리

SQL Server에서 성능 튜닝을 할 때 쿼리 힌트(Query Hint)는 매우 중요한 도구입니다. 그중에서도 OPTION (OPTIMIZE FOR UNKNOWN)은 실행 계획 캐싱과 관련된 성능 문제를 해결할 수 있는 핵심 힌트 중 하나입니다.이 글에서는 OPTION (OPTIMIZE FOR UNKNOWN)의 개념, 사용 사례, 성능에 미치는 영향, 그리고 주의할 점까지 실무 중심으로 상세히 설명합니다.📌 OPTIMIZE FOR UNKNOWN이란?SQL Server에서는 파라미터가 있는 쿼리를 실행하면 해당 파라미터의 "값"을 기준으로 실행 계획을 수립합니다. 이 과정을 *파라미터 스니핑(Parameter Sniffing)*이라고 부르며, 일반적으로는 성능 최적화에 도움이 됩니다.하지만 **편향된 ..