我在尋找爲什麼在表的外鍵上添加索引正在放慢我的同事的觀點,這是相當困難的時候。這個視圖由幾個包含外部聯接和內部聯接的視圖組成。我試圖一個一個去除它們以找出問題出在哪裏,但我不能說,它似乎不是來自特定的觀點,而是來自它們的更多。索引如何減慢select語句?
我知道索引可能會降低插入速度,或者說他們在硬盤上佔用了大小,但我從來沒有讀過任何他們可能會放慢視圖速度的負擔。事實是,當我這樣做:
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
GO
select top 20 * from MyView
它需要20秒的索引和9沒有。
CREATE NONCLUSTERED INDEX [IX_MyField] ON [dbo].MyTable
(
[MyField] 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, FILLFACTOR = 90) ON [PRIMARY]
您是否看過查詢計劃以瞭解發生了什麼? –
理論上,索引使優化程序在構建計劃時考慮更多選項,如果它決定需要進行表掃描,則可能會降低計劃速度。但是,我懷疑這會有什麼可衡量的效果。你能發佈受影響的查詢嗎? – JohnFx
您是否認爲該視圖是調用視圖的視圖(或者是我誤解了)?如果需要,你需要立即停止。這些觀點必須充分實現所有較低視圖的工作,並且在涉及大量數據時非常緩慢。這是一個SQL反模式,可以查看調用其他視圖。 – HLGEM