Bu soru, bir SQL Server endeksleme tekniğinin etkinliği hakkındadır. Bence "endeks kesişimi" olarak bilinir
Bazı performans ve kararlılık sorunları olan varolan bir SQL Server (2008) uygulamasıyla çalışıyorum. Geliştiriciler indeksleme ile bazı garip şeyler yaptılar. Bu konularda kesin kriterler elde edemedim ya da internette gerçekten iyi bir belge bulamıyorum.
Bir masada aranabilir sütunlar var. Geliştiriciler, aranabilir sütunların EACH’inde tek bir sütun dizini oluşturdular. Teori, SQL Server'ın çoğu durumda tabloya verimli bir şekilde erişmek için bu indekslerin her birini birleştirebileceği (kesiştiği) idi . İşte basitleştirilmiş bir örnek (gerçek tablo daha fazla alana sahip):
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
Arama kriterlerini hedefleyen birden fazla sütun indeksinin çok daha iyi olduğunu düşünüyorum, ancak hatalı olabilirim. SQL Server'ın iki dizin aramada bir karma eşleşmesi yaptığını gösteren sorgu planları gördüm. Belki de masanın nasıl arandığını bilmediğinizde anlamlıdır? Teşekkürler.