• SQLServer之Index2


    上一篇已经讲到了创建聚集索引和非聚集索引。这里再补充下聚集索引与非聚集索引的区别。

    一张表只能建1个聚集索引,而理论上可以建249个非聚集索引。

    这是因为建立了聚集索引后,物理数据将按索引页的顺序进行重新排列,而物理数据的排列只能按一种顺寻排列。

    非聚集索引并不会引发物理数据重新排列。

    索引维护

    1、查看是否需要维护索引

    DBCC SHOWCONTIG[{table_name|table_id|view_name|view_id},{index_name|index_id}]

    {table_name|table_id|view_name|view_id}是指定要对其碎片信息进行检查的表和视图,若不指定则对当前数据库所有表和视图进行检查。

    获取table_id或view_id可以用OBJECT_ID()函数

    {index_name|index_id}是指定要对其碎片信息进行检查的索引,为指定以指定的表或视图为准。

    获取index_id可以用SELECT id FROM sysindexes WHERE name = 'index_stuInfo'

    例如:DBCC SHOWCONTIG(StudentInfo,index_stuInfo)

    输出的信息为:

    当扫描密度为100.00%时表示无碎片信息。

    2、重构索引

    当数据进行增删时,索引页数据可能会被影响,使得索引中的信息在数据库中分散开来,产生碎片信息。

    通过重构索引,可以重新组织索引数据的存储,清楚碎片。

    语法:DBCC DBREINDEX(['database.ower.table_name' [,index_name [, fillfactor]]])

    index_name:指要进行重构的索引,若未指定或指定为'',则重构该表下所有索引。

    这里对fillfactor(填充因子)解释下:填充因子的值从0到100可选,指定索引页面保留为空的百分比。

    值为 100  时表示页将填满,所留出的存储空间量最小。一般使用 sp_configure  系统存储过程指
    定的服务器范围的默认填充因子,在大多数情况下都是最佳的选择。 

    例如:DBCC DBREINDEX(StudentInfo,index_stuInfo,80)

    使用填充因子80对[StudentInfo]表的[index_stuInfo]索引进行重构。

    3、整理索引碎片

    使用DBCC INDEXDEFRAG({database_name|database_id},{table_name|table_id|view_name|view_id},{index_name|id})

    例如:DBCC INDEXDEFRAG(Students,StudentInfo,index_stuInfo)

    对Students数据库中的StudentInfo中的index_stuInfo索引进行碎片整理。

    输出如图:

    有时候索引的碎片信息太多了,对它进行整理还不如重构索引,可以根据索引的碎片信息量选择处理方式。

    ************************关于索引先写到这里,在实践中多运用才是真理***********************************

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Android MVP框架实现过程
    bga-banner-引导页滑动第三方控件
    好的习惯是成功的一半之开发
    Java基础复习之String字符串format处理
    ButterKnife--View注入框架的使用
    div阴影
    JavaScript函数的4种调用方法详解
    JavaScript的三种对话框是通过调用window对象的三个方法alert(),confirm()和prompt()
    HTML文字闪烁
    HTML文本框样式大全
  • 原文地址:https://www.cnblogs.com/willpan/p/Index2.html
Copyright © 2020-2023  润新知