MSSQL 5
-
-
프로시저 (Stored Procedure) 개념미리 저장된 SQL 문들의 집합으로, 반복적으로 수행하는 작업을 재사용 가능하게 만들어줌. 파라미터를 받아 복잡한 작업을 수행할 수 있음. 주요 특징실행 방식EXEC 또는 sp_executesql로 호출입력/출력IN, OUT, INOUT 파라미터 가능 (OUTPUT 사용)트랜잭션트랜잭션 내에서 수행하거나, 내부에서 시작할 수 있음로직조건문, 반복문, 에러 처리 등 T-SQL의 모든 로직 사용 가능컴파일최초 실행 시 컴파일되어 캐시에 저장됨 장점복잡한 로직을 DB에 저장해서 비즈니스 로직 분산 가능재사용 가능하고, 보안성 향상 (권한 제어 가능)파라미터를 이용한 동적 쿼리 가능 단점유지보수가 어려워질 수 있음 (버전 관리 문제)함수보다 결과 반환이 자유롭지만,..
-
SELECT OBJECT_NAME(sm.object_id) AS ProcedureName, sm.definitionFROM sys.sql_modules smJOIN sys.objects o ON sm.object_id = o.object_idWHERE sm.definition LIKE '%찾을문구%' AND o.type = 'P'; -- P = 프로시저 AND o.type IN ('FN', 'IF', 'TF'); -- 'FN' 스칼라 함수, 'IF' 인라인테이블반환 함수, 'TF' 멀티문 테이블 반환함수 AND o.type = 'V'; -- V 뷰 AND o.type = 'TR'; -- TR 트리거
-
인덱스(INDEX) 데이터베이스 테이블에서 검색 속도를 높이기 위한 구조. 책의 목차나 색인과 비슷한 개념 ➡️ 속도 차이 수십~수천 배 인덱스와 기본키(PK)의 차이점 기본 키(PK)인덱스(INDEX)목적데이터 무결성 보장 (식별자)조회 성능 향상중복 허용❌ 불가 (항상 UNIQUE)⭕ 가능 (선택 가능)NULL 허용❌ 불가⭕ 가능갯수테이블당 1개만 가능여러 개 가능자동 인덱스 생성⭕ YES (UNIQUE + CLUSTERED)⭕ 수동으로 생성삭제 시PK 제거하면 인덱스도 사라짐인덱스만 개별 삭제 가능 단점❌ 쓰기 성능 저하 → INSERT, UPDATE, DELETE 시 인덱스도 갱신됨❌ 공간 사용 → 인덱스도 저장공간 차지함❌ 너무 많으면 역효과 → 쿼리 최적화기가 잘못된 인덱스를 쓸 수도 있..
-
프로시저 Procedure 자주 사용하는 SQL 쿼리나 복잡한 비즈니스 로직을 하나의 이름으로 저장해두고 호출해서 실행 - MySQL은 웹 백엔드(PHP, Node.js 등)와 함께 쓰는 일이 많아서,로직을 DB에 넣기보단 애플리케이션 쪽에서 처리하는 경우가 많음- MsSQL에서는 비즈니스 로직을 DB에 넣는 문화가 강해서, 프로시저를 자주 활용 기본구조CREATE PROCEDURE 프로시저이름 @파라미터1 타입, @파라미터2 타입 OUTPUTASBEGIN -- SQL 로직END 프로시저 vs 함수 vs 트리거반환여러 개 가능 (OUT)1개 값없음호출 위치EXECSELECT 등 안에서이벤트 자동 실행트랜잭션OXX (제한적)복잡 로직O (조건/분기 등)제한적제한적