我對SQLServer相當陌生,有一件事情讓我很困擾。希望你們中的一個能向我解釋發生了什麼事。爲什麼在弱實體中需要單獨的索引?
當我在一個索引過程跑活動監視器,我意識到,某些查詢,包括弱實體花費的時間比預期的 - 甚至是陌生人 - SQLServer的建議在形式的弱實體創建一個索引
CREATE NONCLUSTERED INDEX [<INDEXNAME>]
ON [dbo].[<TABLE>] ([<ID1>])
INCLUDE ([<ID2>])
GO
這樣做(實際上我對兩列建立了索引,但我認爲結果幾乎相同)確實提高了查詢速度(至少從我在活動監視器中看到的情況)。
CREATE UNIQUE NONCLUSTERED INDEX [<INDEXNAME>] ON [dbo].[<TABLE>]
(
[<ID1>] ASC,
[<ID2>] 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
我現在的問題是:SQLServer是否忽略聚集索引?如果是,爲什麼?我能以某種方式解決這個問題嗎對我來說,添加另一個實際上應該與主鍵索引具有完全相同內容的索引似乎很奇怪。
什麼是弱實體?它與NHibernate有什麼關係? –
由於既沒有顯示查詢也沒有顯示聚集索引,因此很難弄清楚它是否可能被忽略以及爲什麼。也許這些列的順序不同?您還應該使用MS SQL Server Management Studio的「顯示執行計劃」功能來探索查詢的執行方式。 –