Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Покрывающий фильтрованный индекс

$
0
0
есть табличка

CREATE TABLE [cache].[CatalogSlice]
(
	[ID]			[int]				IDENTITY(1,1) NOT NULL,
	[Catalog_ID]	[uniqueidentifier] NOT NULL,
	[Slice_Hash]	[uniqueidentifier] NOT NULL,
	[DateClosed]	[smalldatetime] NULL,
	[StartDate]		[datetime] NOT NULL,
	[EndDate]		[datetime] NOT NULL,
	[Variant_ID]	[uniqueidentifier] NOT NULL,
	[CalcDuration]	[int] NOT NULL,
	[CalcDate]		[smalldatetime] NOT NULL,

	CONSTRAINT [PK_CatalogSlice_ID] PRIMARY KEY CLUSTERED([ID] ASC)
)


есть запрос

select 
	Catalog_ID
from [cache].[CatalogSlice] with(index = IXF_CatalogSlice__CatalogID_SliceHash_Incl_StartDate)
where 
	Catalog_ID = '3478CD0F-DAAB-428F-AFFA-2578D508F1B0' and Slice_hash = '7076CB3D-D0EC-06B6-23D1-058D9441B2BA' and DateClosed is null

select 
	ID
from [cache].[CatalogSlice] 
where 
	Catalog_ID = '3478CD0F-DAAB-428F-AFFA-2578D508F1B0' and Slice_hash = '7076CB3D-D0EC-06B6-23D1-058D9441B2BA' and DateClosed is null



если делаем так

create unique index IXF_CatalogSlice__CatalogID_SliceHash_Incl_StartDate 
	on [cache].[CatalogSlice]([Catalog_ID], [Slice_Hash], [DateClosed]) 
		where (DateClosed is null)


+ хинтуем индекс, то у нас лукап за кластерным ключем!!!

если делаем

create unique index IXF_CatalogSlice__CatalogID_SliceHash_Incl_StartDate 
	on [cache].[CatalogSlice]([Catalog_ID], [Slice_Hash], [DateClosed])
		where (DateClosed is null)


то ожидаемо, запрос удовлетворяется только фильтрованным индексом

Viewing all articles
Browse latest Browse all 7251

Trending Articles