我很难理解为什么在分析行结构时我会在下面获得多个条目。
首先,我设置了两个表。
我正在使用以下查询深入研究Row / Page结构。
CREATE TABLE [Table1]
(
[Column1] INT IDENTITY PRIMARY KEY,
[Column2] VARCHAR (100),
[Column3] VARCHAR (20)
)
CREATE TABLE [Table2]
(
[Column1] INT IDENTITY
FOREIGN KEY REFERENCES [Table1]([Column1]),
[Column4] VARCHAR (1000)
)
然后,我使用以下
插入100万行BEGIN TRANSACTION
INSERT INTO [Table1] ([Column2], [Column3])
VALUES (REPLICATE ('2', 50), REPLICATE('3', 20))
INSERT INTO [Table2] ([Column4])
VALUES (REPLICATE ('4', 1000))
GO 1000000
COMMIT TRANSACTION
然后,使用以下查询,我尝试查看表格中有多少页面。
SELECT
[alloc_unit_type_desc] AS [Data Structure],
[page_count] AS [pages],
[record_count] AS [Rows]
FROM
SYS.dm_db_index_physical_stats (DB_id(), OBJECT_ID (N'Table1'), NULL, NULL, N'detailed')
以下是我的问题:其他41页来自哪里?当他们显然不包含相同的数据?我也没有在选择表上看到它们。
答案 0 :(得分:4)
如果您在查询中添加index_level
,则会看到
SELECT [alloc_unit_type_desc] AS [Data Structure],
[page_count] AS [pages],
[record_count] AS [Rows],
index_level
FROM sys.dm_db_index_physical_stats (DB_id(),
OBJECT_ID (N'Table1'), NULL, NULL, N'detailed')
使用主键创建表。默认情况下,这将是聚集索引。支持此功能的B-tree索引有一个根页面,在根目录和级别为0的11,112个叶级别页面之间有40个中间页面。
(聚集索引的结构from here)