我正在使用SQL Server 2012。
我有下面的表格,
create table myTable
(
Id int identity(1, 1) constraint PK_myTable primary key(Id),
DateEntry date,
FundCode nvarchar(10),
Sedol nvarchar(7),
Name nvarchar(150),
Nominal int,
PriceDate date,
Price float,
PriceCcy nvarchar(3),
PriceSource nvarchar(30)
)
因此,大多数选择查询将在dateEntry字段和FundCode字段上。
因此,我决定在下面创建两个索引。我想知道是否可以假设每个选择查询都将有一个DateEntry作为where子句的一部分,是否需要第一个索引?因为如果未提供FundCode,它仍然可以使用第二个索引,或者那是不正确的吗?
create index IX_tblEQ_Holdings_Date on tblFI_Holdings(DateEntry)
create index IX_tblEQ_Holdings_DateFund on tblFI_Holdings(DateEntry, FundCode)
如果索引具有多个字段,则查询只能使用部分字段,但只能从左侧使用,因此例如,如果索引具有字段A,B和C,则查询可以使用A,A,B和A,B和C,但不包括A和C。
在您的情况下,您可能只接受第二个索引。第一个当然会稍小一些,但它也会导致更新/插入的开销,因此通常创建这样的索引不是一个好主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句