개발/SQL6 Update 쿼리 시 주의사항 Update 쿼리 시 주의해야할 점이 있다. Update, Delete, Insert 쿼리는 Exclusive Lock 이 걸리는 쿼리라고 알고 있을 것이다. Exclusive Lock은 테이블 row에 걸리는 락이고, 읽기&쓰기가 모두 락이 걸린다. 하지만, update 쿼리 시 Where 절이 들어가는 쿼리는 해당 Where절에 인덱싱이 사용되는지 안되는지에 따라서 동작은 바뀐다. 인덱싱이 걸려있는 쿼리는 해당 row에만 락이 걸리고, 인덱싱이 걸려있지 않은 쿼리는 테이블 락이 걸린다. 2개의 차이는 데이터 양이 많아질 경우에 문제가 발생하는데, 데이터 양이 많아지면, 당연히 데드락이 발생할 가능성이 있으므로 문제가 있다. 따라서 인덱싱을 잘 설정해줘야 한다. 2022. 11. 3. SSMS "인덱스가 배열 범위를 벗어났습니다." 위의 사진처럼 SSMS에서 데이터베이스를 연결하자마자 에러가 발생하는 현상이 있다. 이 경우는 SSMS 버전 보다 SQL Server 버전이 높을 경우 발생하는 에러이다. SSMS 는 10.0.4000.0 버전이고, 이 버전은 SQL Server 2008 설치할 때, 같이 설치됬던 버전이다. 연결 된 서버 버전은 SQL Server 2019 버전이며, 버전 정보는 공식 홈페이지를 확인하면 된다. https://support.microsoft.com/en-us/topic/kb4518398-sql-server-2019-build-versions-782ed548-1cd8-b5c3-a566-8b4f9e20293a KB4518398 - SQL Server 2019 build versions Table of con.. 2022. 2. 9. 저장 프로시저 인덱싱 분리 및 실행 계획 분리 1. 실행 계획 캐싱의 특성과 문제점SQL Server 실행 계획 캐싱 원리문자열이 동일한 쿼리는 동일한 실행 계획을 사용합니다.SQL Server는 쿼리 텍스트를 해싱하여 실행 계획을 캐싱합니다.쿼리가 약간이라도 다르면, 별도의 실행 계획이 생성됩니다.대소문자 차이 (SELECT vs select)나 공백이 달라도 서로 다른 쿼리로 인식됩니다.동일한 쿼리라도 실행 시 전달된 파라미터 값에 따라 실행 계획이 달라질 수 있습니다.파라미터 스니핑(Parameter Sniffing): SQL Server는 처음 실행된 쿼리의 파라미터 값을 기준으로 실행 계획을 최적화합니다. 이후 다른 파라미터 값이 전달되더라도 초기 계획을 재사용하므로 비효율이 발생할 수 있습니다.2. sp_executesql의 장점동적 쿼리.. 2022. 1. 25. SQL Insert 전 중복 체크 저장 프로시저 아래와 같이 테이블이 있다고 가정한다. ID PK varchar(30) Title nvarchar(250) Contents nvarchar(max) CreatedDate datetime IsDeleted bit GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [up_Insert_Test] @ID varchar(30), @TITLE nvarchar(250), @CONTENTS nvarchar(max), @ISDELETED bit AS BEGIN -- SET NOCOUNT.. 2022. 1. 15. 이전 1 2 다음 반응형