如题:Alter Index .... disable 后,增删改后还有维护索引的开销吗?
GOOGLE  BAIDU 后没找到答案。

解决方案 »

  1.   

    没有开销啊,disable的作用就在此
      

  2.   

    禁用索引可相当于删除索引树的内容(但索引名还在), 故禁用索引后对表的DML操作无更新索引的开销.
    直到重新启用索引才重建索引树的内容, 测试代码如下供参考.-- 新建测试表
    create table tab1 (x int, y char(100))-- 新建索引
    create index ix_tab1_y on tab1(y)-- 空表的index_size为0
    exec sp_spaceused 'tab1'
    name            rows        reserved           data               index_size         unused
    -------------- ----------- ------------------ ------------------ ------------------ ------------------
    tab1             0           0 KB               0 KB               0 KB               0 KB-- 向测试表tab1插入10万行记录,代码略..-- index_size = 19704 KB
    exec sp_spaceused 'tab1'
    name          rows        reserved           data               index_size         unused
    ----------- ----------- ------------------ ------------------ ------------------ ------------------
    tab1          100000      31376 KB           11600 KB           19704 KB           72 KB-- 禁用索引
    alter index ix_tab1_y on tab1 disable-- index_size = 8 KB  即剩一个索引页面.
    exec sp_spaceused 'tab1'
    name            rows        reserved           data               index_size         unused
    ------------- ----------- ------------------ ------------------ ------------------ ------------------
    tab1            100000      11656 KB           11600 KB           8 KB               48 KB-- 启用索引
    alter index ix_tab1_y on tab1 rebuild-- index_size = 11552 KB 恢复正常大小.
    exec sp_spaceused 'tab1'
    name       rows        reserved           data               index_size         unused
    -------- ----------- ------------------ ------------------ ------------------ ------------------
    tab1       100000      23344 KB           11600 KB           11552 KB           192 KB