CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

书上说,创建聚集索引,所需磁盘空间约是数据表实际容量的1.2倍,我尝试求证测试了一下得到一些数据,好像不对,哪位大侠抽空帮解释一下?

楼主wwh999(印钞机V2.0...开发中....)2006-04-01 19:54:07 在 MS-SQL Server / 基础类 提问

书上说,创建聚集索引,所需磁盘空间约是数据表实际容量的1.2倍,我尝试求证测试了一下得到一些数据,好像不对,哪位大侠抽空帮解释一下?  
   
  按书上的方法,我使用sp_spaceused存储过程来查看表的空间占用情况.  
  exec   sp_spaceused   供应商  
  以下是我测试得到的一些数据:  
          说明               Name           rows         reserved           data               index_size       unused  
      ---------     --------------------------------------------------------------  
  建聚集索引前:   供应商         830             136KB               104KB                 8KB                   24KB  
  建聚集索引后:   供应商         830             128KB               104KB               16KB                     8KB  
   
  这样看来,表实际大小104KB*1.2,它怎么着也等于不了16KB....?有点迷糊了..  
   
  后改用一张大一点的表进行测试:  
          说明               Name           rows         reserved           data               index_size       unused  
      ---------     --------------------------------------------------------------  
  建聚集索引前:   订单明细     53454           6856KB         6536KB                   8KB                   48KB  
  建聚集索引后:   订单明细     53454           6592KB         6536KB                 32KB                   24KB  
   
  依然如故,算法好像还是不能成立.  
   
  看着测试得到的数据,我实在不明白是怎么回事:  
  1.那个1.2倍究竟是个什么回事,在以上数据上是怎么表达出来的?  
  2.建立聚集索引前后,为何reserved会发生变化(如第1个测试中,由136KB变为了128kB)  
   
  请各位大侠发表一下意见,以供虚心学习为谢! 问题点数:20、回复次数:8Top

1 楼luoqun_ncs(暂时冰封)回复于 2006-04-01 20:38:00 得分 0

如果你的聚簇索引键值只有2种值,   那么索引页只有两条记录.所以并不是严格的1.2倍Top

2 楼zjcxc(邹建)回复于 2006-04-01 20:52:15 得分 10

1.   1.2倍只是推算值,   不是精确值  
  2.   看大小是   data+index_size   ,   而不是单纯的   dataTop

3 楼wwh999(印钞机V2.0...开发中....)回复于 2006-04-03 08:54:17 得分 0

luoqun_ncs(暂时冰封)   ,首先谢谢你的回复  
   
  如果你的聚簇索引键值只有2种值,   那么索引页只有两条记录.所以并不是严格的1.2倍  
  -----------------------------------------------------------------------------------  
  我的聚簇索引,键集是数据型自动增长值(如1、2、3、4....)啊,  
  但是这样怎样算,也不至于像...104KB*1.2=16KB     ..???啊..  
  Top

4 楼wwh999(印钞机V2.0...开发中....)回复于 2006-04-03 09:00:05 得分 0

zjcxc(邹建)   谢谢回复  
  在你的回复中:  
  1.2倍只是推算值,   不是精确值  
  ---------------------------------------------------  
  正如上面所说的,Data占104KB,104*1.2   与16K无论如何都划不了等号....???  
  而且,我观察了很多个表的聚簇索引,有的表比较大,占8000KB、15000KB,可是索引敢就占几十个KB...  
  是不是书上说,创建聚集索引,所需磁盘空间约是数据表实际容量的1.2倍,这个是有问题的???  
  是否,按被创建聚簇索引的字段中项目的总数所占用的大小的1.2倍啊?是不是啊?Top

5 楼tangchao515(梦回唐朝)回复于 2006-04-03 09:08:54 得分 10

是数据加索引占用的空间是原来的1.2倍,这只是个大概数字。Top

6 楼jixiaojie(太多借口)回复于 2006-04-03 09:19:58 得分 0

upTop

7 楼wwh999(印钞机V2.0...开发中....)回复于 2006-04-03 11:59:24 得分 0

tangchao515(梦回唐朝)   写道:  
  是数据加索引占用的空间是原来的1.2倍,这只是个大概数字。  
  ---------------------------------------------------------------------------  
   
  是这样的吗?Top

8 楼wwh999(印钞机V2.0...开发中....)回复于 2006-04-03 15:57:53 得分 0

自己顶一下。Top

相关问题

关键词

得分解答快速导航

  • 帖主:wwh999
  • zjcxc
  • tangchao515

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo