原创  聚集索引插入物理磁盘的顺序 收藏

假如表有聚集索引,如果没有排序,我们Select 的时候返回给我们的将是按照这个聚集索引排序后的结果,那么是否在物理磁盘上表字段是按照这个聚集键排序的,做个实验。

 

相关代码为:

CREATE PROCEDURE [dbo].[GetFileNumAndPageNumFromHex]

@first binary(6)

AS

BEGIN

 

    SET NOCOUNT ON;

 

    declare @PageNum int

    select @PageNum = convert(int, substring(@first,4,1) + substring(@first,3,1) +

    substring(@first,2,1) + substring(@first,1,1) )

    declare @FileNum int

    select @FileNum = convert(int, substring(@first,6,1) + substring(@first,5,1))

    select @FileNum as  FileNum, @PageNum  as PageNum

 

END

----------------------------------

CREATE PROCEDURE [dbo].[GetPageDataInformation]

(

    @file_id int,

    @page_id bigint,

    @level int=3

)

AS

BEGIN

 

    DECLARE @iSQL NVARCHAR(100)

    SELECT @iSQL=

       'dbcc page(''pod_test'','+

       CONVERT(VARCHAR(20),@file_id)+','+

       CONVERT(VARCHAR(20),@page_id)+','+

       CONVERT(VARCHAR(20),@level)+')'

    --SELECT @iSQL

    dbcc traceon(3604)

    EXEC (@iSQL)

        

END

-----------------------------------------

实验顺序

 

第一步骤

 

 

然后我们再插入相应的一些数据:

 

 

 

物理顺序和OFFSET 一致,我们按照OFFSET 排序,看看结果:

我们看到,其实它跟我们插入的顺序一致,并不是按照聚集键的顺序(‘1’,‘10’,‘100’,‘101’,……)在物理磁盘上存储的;而我们Select 的时候返回的却是按照Slot 排序的结果。

 

发表于 @ 2008年10月04日 23:29:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:LiteSpeed 时点还原 | 新一篇:非聚集索引上放在堆上时分配给表物理磁盘的原理

  • 发表评论
  • 评论内容:
  •  
Copyright © Lori268
Powered by CSDN Blog