首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server中的数据结构分析

SQL Server中的数据结构分析
EN

Stack Overflow用户
提问于 2016-04-03 19:48:49
回答 1查看 612关注 0票数 1

在分析行结构时,我很难理解为什么在下面得到多个条目。

首先,我摆了两张桌子。

我正在使用下面的查询深入研究行/页结构。

代码语言:javascript
运行
复制
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万行

代码语言:javascript
运行
复制
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

然后,使用下面的查询,我尝试查看构成该表的页面数。

代码语言:javascript
运行
复制
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页是从哪里来的?当它们明显不包含相同的数据时?我也没有在select表上看到它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-03 20:06:44

如果将index_level添加到查询中,您将看到

代码语言:javascript
运行
复制
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-树索引只有一个根页,在根级和11,112个叶级页面之间有40个中间页,位于0级。

(聚集索引从这里开始的结构)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36390326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档