SQL Server 썸네일형 리스트형 CREATE INDEX CREATE INDEX index1 ON schema1.table1 (column1); CREATE CLUSTERED INDEX index1 ON database1.schema1.table1 (column1); CREATE UNIQUE INDEX index1 ON schema1.table1 (column1 DESC, column2 ASC, column3 DESC); 인수 UNIQUE 테이블 또는 뷰에 고유 인덱스를 만듭니다. 고유 인덱스는 두 개의 행에 동일한 인덱스 키 값을 가질 수 없습니다. 뷰의 클러스터형 인덱스는 고유해야 합니다. UNIQUE VS PRIMARY KEY 차이점 - NULL 입력 가능 여부 CLUSTERED 키 값의 논리적 순서가 테이블에 있는 해당 행의 물리적 순서를 결정하는 인덱.. 더보기 temp table 사용시 recompile 발생 없이 사용하기 - 아래와 같이 sp 내에서 TEMP 테이블을 포함하는 동적 쿼리 실행시 생성 주체와 실행 주체가 달라 COMPILE 이 발생합니다. (compile은 서버 비용중 큰 비중을 차지하고, 쿼리 성능 저하의 원인중 하나 입니다.) alter proc test_recompile_in as CREATE TABLE #TEST ( A INT ) exec SP_EXECUTESQL N' INSERT INTO #TEST SELECT TOP 10 SEQ FROM TEST1M * 실행할때마다 compile 발생 - 아래와 같이 동적 쿼리 바로 위에 insert 문을 넣어주면 동적 쿼리내에서 스키마 변경이 없어지므로 compile 발생이 없어 지고, 기존 플랜을 재활용 하므로 서버 리소스도 절약하고, 쿼리 성능도 향상 됩니다.. 더보기 FIRST_VALUE Group by 후에 min, max 값을 가져오는 경우도 있지만 집계레벨과 상관 없이 묶인 대상중에 첫번째 대상에 값들을 가지고 와야 하는 경우도 있다. 아래와 같은 데이터가 있다고 한다면 select col1,min(col2) from table group by col 형태로 데이터를 가지고 온 다음 col2 에 해당하는 col3,col4를 가지고 와야 한다면 min, max 함수로는 가져 올 수 없다. 이럴 때 FIRST_VALUE 함수를 사용해서 가져 오는 것이 가능 하다. select col1, max(col3), max(col4) from ( select col1, FIRST_VALUE(col3) over(partition by col1 order by col2) as col3, FIRST_V.. 더보기 쿼리 수행 시간 체크 아래 샘플 쿼리와 같이 간단하게 수행시간 체크가 가능하다. 몇백개의 쿼리를 체크하려면 trace를 사용하거나 프로그램을 만들어야 할수도 있는데 sp 안에서 시작 시간과 종료 시간의 시간차를 프린트하면 간단하게 체크 가능 하다 DECLARE @S DATETIME = GETDATE() SELECT COUNT(*) FROM TEST1M_DT WHERE DUMY2 LIKE '%A%' DECLARE @E DATETIME = GETDATE() SELECT CAST(DATEDIFF(MILLISECOND,@S, @E) AS VARCHAR) 더보기 일자(선분) 검색의 성능 개선 CREATE TABLE #DT ( DT CHAR(8) PRIMARY KEY ) INSERT INTO #DT SELECT CONVERT(VARCHAR, DATEADD(D, NUMBER, '20230120'), 112) FROM MASTER..SPT_VALUES WHERE TYPE = 'P' AND NUMBER 더보기 SQL Server JSON 함수(Transact-SQL) 기능Description ISJSON 문자열에 유효한 JSON이 포함되어 있는지 테스트합니다. JSON_VALUE JSON 문자열에서 스칼라 값을 추출합니다. JSON_QUERY JSON 문자열에서 개체 또는 배열을 추출합니다. JSON_MODIFY JSON 문자열의 속성 값을 업데이트하고 업데이트된 JSON 문자열을 반환합니다. JSON_PATH_EXISTS 지정된 SQL/JSON 경로가 입력 JSON 문자열에 있는지 여부를 테스트합니다. create table JSON_table ( seq int identity(1,1) , reg_date datetime , JSON nvarchar(1000) ) insert into JSON_table (reg_date,JSON) values (getdate(),.. 더보기 SQL Server 통계 Stream 생성 샘플 쿼리 DECLARE @Schema sysname, @Table sysname, @StatsName sysname, @IncludeStatsStream BIT, @StatsStream VARCHAR(MAX), @TwoPartQuotedName NVARCHAR(500); select @Schema = 'dbo', @Table = 'TEST1M', @StatsName = 'PK_TEST1M', @IncludeStatsStream = 1; select @TwoPartQuotedName = QUOTENAME(@Schema) + '.' + QUOTENAME(@Table); IF @IncludeStatsStream = 1 AND @@MICROSOFTVERSION/ POWER(2,24) > 9 BEGIN DECLARE @S.. 더보기 JSON Insert Update Create Index MSSQL 에서 JSON 데이터를 수정하는 방법입니다. DROP TABLE dbo.Logs create table dbo.Logs ( _id bigint primary key identity, log nvarchar(max), dumy1 AS JSON_VALUE(log, '$.DUMY2'), index ix_severity (dumy1) ); /* 경고! 비클러스터형 인덱스에 대한 최대 키 길이는 1700바이트입니다. 인덱스 'ix_severity'의 최대 길이는 8000바이트입니다. 큰 값을 조합한 일부 경우에는 삽입/업데이트 작업을 수행할 수 없습니다. */ DECLARE @vJson AS NVARCHAR(MAX) SET @vJson = (SELECT top 100000 * FROM TEST1M FO.. 더보기 이전 1 2 다음