免责声明:我不是MSSQL dba ....
我在stackoverflow [1]的其他地方使用了两个sql查询:https://stackoverflow.com/a/7892349/2195559 [2]:https://stackoverflow.com/a/17600911/2195559
[1]声称显示表及其索引使用的总空间 [2]声称显示索引使用的总空间
所以看看我最大的表:
[1]给出UsedSpaceKB = 58757504。所以表和索引是56GB
[2]为同一个表上的最大索引提供了Indexsize(KB)= 55166168(同一个表上还有一些其他索引 - 但相比之下它们很小)。所以最大的指数是52GB
[1] - [2](对于同一表上的索引)= 4GB。
所以IF [1]和[2]是正确的,我已经理解了输出,然后我有一个4GB的表,上面有52GB的主键索引。
问题:
表和pk索引的ddl是
CREATE TABLE "YYY"."XXX_audit"
(
id numeric(19,0) PRIMARY KEY,
version numeric(19,0),
compressed_response image,
date_created datetime,
duration numeric(19,0),
request text,
response text,
session_id varchar(255),
uid varchar(255),
webservice_uri varchar(255),
event_id varchar(36)
)
GO
CREATE UNIQUE INDEX PK__XXX_audit__6CC31A31 ON "YYY"."XXX_audit"(id)
答案 0 :(得分:0)
我是否正确理解1和[2]?
没有。您有一个表格,其中包含大小为52 GB的群集索引和一个大小为4GB的非群集索引。索引总大小:56 GB。您没有索引以外的任何内容。没有'表',只有索引。
我建议你先阅读Table and Index Organization。表可以组织为堆,作为聚簇索引B-Trees(以及作为聚簇列存储库或SQL Server 2014及更高版本中的Hekaton索引)。你在寻找什么作为表格'将是一个基本堆,但由于您声明了一个主键,该主键已成为表的聚簇索引,因此您没有基本堆。