首页 > 数据库技术 > 详细

Sqlserver填充因子测试

时间:2014-02-28 03:20:45      阅读:539      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
CREATE TABLE [dbo].[test](
    [id] [int] IDENTITY(1,1) NOT NULL primary key,
    [aa] [int] NULL,
    [bb] [int] NULL)
    
CREATE NONCLUSTERED INDEX [aa] ON [dbo].[test] 
(
    [aa] ASC
    )

CREATE NONCLUSTERED INDEX [bb] ON [dbo].[test] 
(
    [bb] ASC
)WITH (FILLFACTOR = 50)
bubuko.com,布布扣


建立测试用的表,index_aa无填充因子,index_bb50%填充因子,然后开始灌数据

bubuko.com,布布扣
declare @aa int
declare @bb int
set @aa=50
set @bb=50
while @aa<1000000
begin
insert into [test](aa,bb)
select @aa,@bb
set @aa=@aa+50
end
bubuko.com,布布扣

然后看一下索引占用页
name page_count
aa         35
bb         35
PK_test  52

发现有填充因子和没有填充因子的索引,占用的数据页是一样的。

然后我们再重建index_bb

bubuko.com,布布扣
CREATE NONCLUSTERED INDEX [bb] ON [dbo].[test] 
(
    [bb] ASC
)WITH (FILLFACTOR = 50,DROP_EXISTING=ON)
bubuko.com,布布扣

然后再看一下索引页
name page_count
PK_test 52
aa        35
bb        69

发现重建后的索引才满足填充因子,所以填充因子只有在已经有数据的表里才有体现,在表初建时添加填充因子是没有意义的。

然后我们继续测试一下,建完填充因子后,再往数据后添加时,填充因子是否有用。

bubuko.com,布布扣
declare @aa int
declare @bb int
set @aa=1000001
set @bb=1000001
while @aa<10000000
begin
insert into [test](aa,bb)
select @aa,@bb
set @aa=@aa+500
end
bubuko.com,布布扣

然后再看索引数据页
name page_count
aa         66
bb        100

之间相差和之前相差的一样,还是34页,所以填充因子对之后的数据依然不起效果。

总结一下,填充因子是一个看上去很美的东西,但是在表初建时完全无用,只有再重建索引时才会有所体验,然而对后期灌入的稍大数据一样不会有效果。

Sqlserver填充因子测试,布布扣,bubuko.com

Sqlserver填充因子测试

原文:http://www.cnblogs.com/lweia/p/3570861.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!