Sql-Server

sql數據庫中的數據大小可以小於索引大小嗎?

  • November 3, 2020

SQL Server 表上的索引是否會比表本身消耗更多的磁碟空間?

我已經閱讀了幾篇文章並研究了這個和一些專家推薦的表分區,例如,這個 MSDN 論壇問題

為什麼和索引可以比實際數據更大?

如何減小索引大小?

在這種情況下如何辨識不必要的索引?

一個完全有效的表設置可能是:

CREATE TABLE dbo.A
(
   a int NOT NULL
   , b varchar(30) NOT NULL
   , c varchar(30) NOT NULL
);

CREATE INDEX A_01 ON dbo.A (a, b);
CREATE INDEX A_02 ON dbo.A (a, c);
CREATE INDEX A_03 ON dbo.A (a, c, b);

很明顯,索引使用的總空間將超過表本身使用的空間。

索引空間總量可能高於表本身使用的總量的原因有很多。立即想到的幾個:

  • 粗心地選擇了我們“索引所有內容”的索引策略。
  • 數據庫引擎優化顧問推薦的每一個索引的實現
  • 對主要只讀工作負載(例如數據倉庫)上的許多查詢組合提高查詢速度。

如果您在問題中提供表定義以及所有現有索引,在 T-SQLCREATE TABLE語句中,我們可能會提出改進建議。

引用自:https://dba.stackexchange.com/questions/215411