我有一個關于 EmpId 的索引。我想在索引中包含幾列。
Create Index IX_01_EmpId On empTable(EmpId) INCLUDE (name, dept, salary, joining_dt).
我知道包含的列通過避免鍵查找來加速查詢。它們如何影響 Insert/Update/Delete 陳述句的性能?當對表執行任何插入/更新/洗掉陳述句時,索引表的幕后會發生什么?
uj5u.com熱心網友回復:
IMO,性能影響更多是在 SELECT 方面。
選擇時,您可能會使用索引。如果您執行許多顯示這些列的查詢,并且您已將它們包含在索引中,它將避免您所說的鍵查找。這樣做的代價是索引的每個頁面(SQL 將所有內容存盤在 8KB 頁面中)現在包含更少的行,因為它們更大。因此,使用索引的相同查詢將花費更長的時間,因為它必須掃描(尋找)更多頁面。包含的列越多,這種效果就越強。
當您執行 INSERT/UPDATE/DELETE 時,SQL Server 必須維護此索引。它將相應地修改頁面資料。我敢打賭,只要它必須從索引中插入/更新/洗掉一個“行”并觸摸它的頁面,它就不會產生太大的不同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/346766.html
標籤:sql sql-server 数据库 查询语句 数据库设计
上一篇:每組所需的最大行數
下一篇:通過檢索組中的多個資訊
