본문 바로가기

개발&새발/DB

(5)
필터 조건식에서의 암시적 형변환 - MSSQL #일반 필터 조건일때 동일한 형식 패밀리에 소속된 데이터 형식 사이에 암시적 형변환의 경우, 인덱스가 동일한 정렬 조건으로 정렬되거 있다고 가정하여 인덱스를 사용할 수 있다. 예를 들어, = 과 같은 필터 조건에서도 인덱스를 사용할 수 있으며, int_col = decimal_col과 같은 조인 조건에서도 우선순위가 낮은 INT 칼럼에 명시적으로 정렬 작을을 하지 않아도 Merge Join 연산자를 사용할 수 있다. #LIKE 조건을 사용할 때 임의의 와일드카드와 함께 사용되는 LIKE 조건의 카디널리티 예측작업을 향상시키기 위해 문자열 요약 통계 정보를 수집하여 관리한다. 문자열 칼럼에 대해 부분 문자열에 대한 빈도(frequency) 분포 정보를 수집한다.(2000에서는 LIKE 'const%'와 같..
대소문자 구분 필터 - MSSQL 기본적으로 MSSQL은 대소문자를 구별하지 않는 기본 정렬순서를 가지고 있다. 즉, 'A', 'a'는 (정렬, 비교, 고유성 비교 등의 작업에서)같은 정렬 순위에 놓이게 된다. 때문에 대소문자 구분을 하여 정렬이 필요한 경우 다음 쿼리와 같이 COLLATE 옵션을 이용한다. USE Northwind SELECT CustomerID, CompanyName, Country FROM dbo.CIstomers WHERE CustomerID COLLATE Latin1_General_CS_AS = N'ALFKI' 이 쿼리는 인덱스를 타지 못한다. 때문에 실행계획을 통해 확인해 보면은 Table Scan이 이루어 지는 것을 확인할 수 있다. 이유는 CustomerID 칼럼에 정렬순서를 변경하는 조작을 하기 때문에, ..
읽어야만(?)하는 책 - Inside Microsoft SQL Server 2005: T-SQL Programming #필독서 도서관에 갔다가 잠깐 열어봤는데 이전에 일하면서 '어쩌지 어쩌지'하면서 고민하면서 선택하기 힘들었던 내 상황을 알기라도 한듯 똑같은 문제들을 제시해 놓고 있다. 그만큼 실무서에 가깝다고도 봐야 할 듯. #시리즈 4권의 시리즈이다. 이 책은 2편에 해당하며 1편에 해당하는 T-SQL Query를 먼저 습득하는 것이 좋음. 물론 알면 스킵해도 되지만... 난 어쩔수 없이 스킵. 이유는 T-SQL Query는 아직 번역이 안되었을 뿐만 아니라 2008의 원서가 나와버렸다. 고로 우리나라 출판사에서 2005를 이제서야 번역할 이유가 없어졌다는 것이다. ㅡㅜ 또 다른 시리즈로는 3편에 해당하는 Query Processing and Optimization와 4편에 해당하는 The Storage Engine..
T-SQL SCOPE_IDENTITY() http://msdn.microsoft.com/ko-kr/library/ms190315.aspx 설명은 나중에.
MSSQL에서 BLOB타입의 강제 포인터 처리 MSSQL에서 BLOB(Binary Large Object) 타입의 데이터를 사용하는 경우 특별한 옵션을 주지않는 이상 기본 설정으로는 8000byte 안쪽의 데이터들은 같은 테이블에서 관리하며 8000byte를 넘는 경우 별도의 테이블을 구성하여 포인트값을 가지고 처리하도록 되어있다. 이런 데이터들에 한해서 강제로 포인터 처리하는 방법이 존재한다고 한다. 사용방법은 아래와 같으며 아직 정확한 성능 테스트는 못한 상태이다. 적용 문법 EXEC sp_tableoption [테이블명], 'large value types out of row', 'ON' 적용 확인 select name, large_value_types_out_of_row from sys.tables