使用 MSSQL 和 MSSQL Server Management Studio,我有一个相当复杂的查询,其中包含一些连接和几个子查询。
选择的一个属性是一个名为 Duration 的小数 (19,5)。当使用 NHibernate 的 Queryover 在 SelectSubQuery 中获取此列时,由于某种原因,我的对象需要大约 2 分钟来水合,查询只有几毫秒。
手动添加索引,右键单击索引 -> 添加索引,在 (Id, Duration) 上使查询稍微快一些,并且水合可以接受,不是完美无缺,但足够好。但是,如果我右键单击索引 -> 脚本索引为,并运行该创建的脚本,它不会提高查询的性能。
Script Index As
创建
CREATE NONCLUSTERED INDEX [idx_Duration] ON [Table]
(
[Id] ASC,
[Duration] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
所以我可以说,手动创建的索引可以提高性能,而脚本索引则不能。