出於參數的原因,可以說它適用於SQL 2005/8。我知道,當您將索引放在表格上以調整SELECT
語句時,這些索引需要在執行/UPDATE
/DELETE
操作期間保留。MS-SQL何時維護表索引?
我的主要問題是:
如果將SQL Server的維護表的索引?
我有很多後續問題:
我天真地以爲它會做這樣的命令已被執行之後。假設您要插入20行,它將在插入並提交20行後維護索引。
在一個 腳本特性爲多條語句 對錶的情況下,會發生什麼,但在其他方面 不同的語句?
服務器是否具備智能 所有 語句執行後維持索引或它做 它每次發言?
我在哪裏見過索引後,大型刪除和重建情況/多INSERT
/UPDATE
行動。
這大概即被重建 整個表的索引,即使你只 行更改了一把?
會不會有在試圖整理
INSERT
和UPDATE
行動統一到一個更大的批次性能優勢 , 說,通過收集排在 臨時表中插入,而不是做 許多較小的刀片?- 如何整理上面的堆,以防止刪除索引與維護命中?
對不起,問題越來越多 - 這是我一直知道要注意的事情,但是當嘗試調整腳本以獲得平衡時,我發現實際上我並不知道索引維護何時發生。
編輯:我知道性能問題在很大程度上取決於插入/更新過程中的數據量和索引的數量。再次爲了參數的緣故,我有兩種情況:
- 一個索引重調整表 選擇。
- 一個索引燈表(PK)。
這兩種情況都會有一個大的插入/更新批次,比如10k +行。
編輯2:我知道能夠對數據集上的給定腳本進行概要分析。然而,分析並不能告訴我爲什麼某種方法比另一種更快。我對索引背後的理論更感興趣,也是性能問題的源泉,而不是一個明確的「這比這更快」的答案。
謝謝。
好問題。對於第二部分,它將完全依賴於索引的數量和內容,以確定是否更快地刪除和重建,或只是在索引之上更新。與SQL中的大多數事情一樣,100%的時間都沒有正確的答案或方法。 – JNK 2010-09-21 15:09:49
@JNK我推測,我希望有人可以將這種情況放在一邊,或者解釋某種方法開始變得昂貴的情況。 – 2010-09-21 15:11:16