本帖最后由 TravyLee 于 2012-11-12 09:11:11 编辑

解决方案 »

  1.   

    不同版本的sql server会不会在内部处理实现上会有所不同?
      

  2.   


    我做这个测试是在SQL SERVER2008  sp2上做的  参考的书籍上面是在SQL SERVER2005上做的  2000的不知道了
      

  3.   

    1、这个文章的标题确切的说是各种索引的使用个,而不是存储结构的使用。存储结构侧重的是表的结构的设计,例如说某个字段的数据类型和长度,他们在数据库中的存储。建议看下存储引擎。
    2、在测试的时候,每次应该清掉缓存,然后测试。不知楼主是否清理,文章没有说明。
    3、
    --SQL Server这种堆和树的存储方式决定了创建非聚集索引这种设计是一个既浪费空
    --间,性能也不一定是最好的。前面的分析已经说明了它的浪费存储空间,接下来以
    --一个最直观的查询来分析它的性能

    说说楼主的观点:不同意 非聚集索引时浪费存储空间的说法。毕竟一个表上只能建立一个聚集索引,但是查询的条件可能很多,这样的话就需要在经常查询的列上来建立索引。如果在同一列上建立聚集索引和非聚集索引,然后在该列上查询,那么效率上 聚集索引有它得天独厚的优势,因为聚集索引的是包含在数据页上的,而非聚集索引时限在索引页上进行查找,然后找到相应数据航所在的位置,然后再到数据页上找数据,所以在mssql的查询有时建立索引,在某些查询时也可能不使用该索引。个人认为楼主的测试没有代表性。应该在一个没有建立索引的和建立了非聚集索引的表上来测试非聚集索引的作用。
      

  4.   

    SQL Server这种堆和树的存储方式决定了创建非聚集索引这种设计是一个既浪费空
    --间,性能也不一定是最好的。--》》似乎将非聚集索引批的一文不值。聚集索引性能上却是不一定最好,在有时查询的时候也可能不会用到建立的索引,但是建立非聚集索引时用最小代价来换取最大的利益的。
    我建议看看技术内幕的存储引擎一本 ,上面有一张专门说的索引。相信对你会有所帮助
      

  5.   

    hen you  a fa f a jfaljf 
      

  6.   

    这不是徐海蔚的《sqlserver企业级平台管理实践》这本书上的内容么?
      

  7.   

    dbcc showcontig 被标记为已过时
    应该用sys.dm_db_index_physical_stats去替代dbcc showcontig 
    SELECT * FROM sys.dm_db_index_physical_stats(DB_ID(''),OBJECT_ID(''),NULL,NULL,'detailed')
      

  8.   


    该表数据有800多W条 为何dbcc showcontig显示如下信息?求解dbcc showcontig(omaster)DBCC SHOWCONTIG 正在扫描 'omaster' 表...
    表: 'omaster' (914102297);索引 ID: 0,数据库 ID: 7
    已执行 TABLE 级别的扫描。
    - 扫描页数................................: 0
    - 扫描区数..............................: 0
    - 区切换次数..............................: 0
    - 每个区的平均页数........................: 0.0
    - 扫描密度 [最佳计数:实际计数].......: 100.00% [0:0]
    - 区扫描碎片 ..................: 0.00%
    - 每页的平均可用字节数.....................: 0.0
    - 平均页密度(满).....................: 0.00%
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。