簡體   English   中英

將列添加到索引中的 INCLUDE 的效果

[英]Effects of adding columns to INCLUDE in an index

我有一個關於 EmpId 的索引。 我想在索引中包含幾列。

Create Index IX_01_EmpId On empTable(EmpId) INCLUDE (name, dept, salary, joining_dt). 

我知道包含的列通過避免鍵查找來加速查詢。 它們如何影響 Insert/Update/Delete 語句的性能? 當對表執行任何插入/更新/刪除語句時,索引表的幕后會發生什么?

IMO,性能影響更多是在 SELECT 方面。

選擇時,您可能會使用索引。 如果您執行許多顯示這些列的查詢,並且您已將它們包含在索引中,它將避免您所說的鍵查找。 這樣做的代價是索引的每個頁面(SQL 將所有內容存儲在 8KB 頁面中)現在包含更少的行,因為它們更大。 因此,使用索引的相同查詢將花費更長的時間,因為它必須掃描(尋找)更多頁面。 包含的列越多,這種效果就越強。

當您執行 INSERT/UPDATE/DELETE 時,SQL Server 必須維護此索引。 它將相應地修改頁面數據。 我敢打賭,只要它必須從索引中插入/更新/刪除一個“行”並觸摸它的頁面,它就不會產生太大的不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM