이 질문은 SQL Server 인덱싱 기술의 효과에 관한 것입니다. 나는 그것이 "인덱스 교차"라고 알려져 있습니다.
많은 성능 및 안정성 문제가있는 기존 SQL Server (2008) 응용 프로그램을 사용하고 있습니다. 개발자는 인덱싱으로 이상한 일을했습니다. 이러한 문제에 대한 결정적인 벤치 마크를 얻지 못했으며 인터넷에서 실제로 훌륭한 문서를 찾을 수 없었습니다.
테이블에는 검색 가능한 많은 열이 있습니다. 개발자는 검색 가능한 각 열마다 단일 열 인덱스를 만들었습니다. 이론은 SQL Server가 이러한 각 인덱스를 결합 (교차)하여 대부분의 상황 에서 테이블에 효율적으로 액세스 할 수 있다는 것 입니다. 다음은 간단한 예입니다 (실제 테이블에는 더 많은 필드가 있음).
CREATE TABLE [dbo].[FatTable](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[col1] [nchar](12) NOT NULL,
[col2] [int] NOT NULL,
[col3] [varchar](2000) NOT NULL, ...
CREATE NONCLUSTERED INDEX [IndexCol1] ON [dbo].[FatTable] ( [col1] ASC )
CREATE NONCLUSTERED INDEX [IndexCol2] ON [dbo].[FatTable] ( [col2] ASC )
select * from fattable where col1 = '2004IN'
select * from fattable where col1 = '2004IN' and col2 = 4
검색 기준을 대상으로하는 여러 열 색인이 훨씬 우수하다고 생각하지만 잘못되었을 수 있습니다. 두 가지 인덱스 탐색에서 SQL Server가 해시 일치를 수행하는 것을 보여주는 쿼리 계획을 보았습니다. 테이블을 어떻게 검색하는지 모르는 경우이 방법이 적합합니까? 감사.