zoukankan      html  css  js  c++  java
  • Sql Server索引重建

    公司线上数据有几千万数据,有时候索引碎片会导致索引达不到我们的预期查询效率,这个时候将索引重建将会提升一定效率,不过重建的时候一定得晚上用户少的时候,索引重建需要一定时间。

    直接贴自动重建索引脚本吧

     1 DECLARE @Database VARCHAR(255);  
     2 DECLARE @Table VARCHAR(255);  
     3 DECLARE @cmd NVARCHAR(500);  
     4 DECLARE @fillfactor INT;
     5 SET @fillfactor = 90;
     6 DECLARE DatabaseCursor CURSOR
     7 FOR
     8     SELECT  name
     9     FROM    master.dbo.sysdatabases
    10     WHERE   name IN ( 'ChemicalInfo_ALLFULL_New' )
    11     ORDER BY 1;  
    12 OPEN DatabaseCursor;  
    13 FETCH NEXT FROM DatabaseCursor INTO @Database;  
    14 WHILE @@FETCH_STATUS = 0
    15     BEGIN  
    16         SET @cmd = 'DECLARE TableCursor CURSOR FOR SELECT ''['' + table_catalog + ''].['' + table_schema + ''].['' +
    17   table_name + '']'' as tableName FROM [' + @Database
    18             + '].INFORMATION_SCHEMA.TABLES
    19   WHERE table_type = ''BASE TABLE''';  
    20    -- create table cursor  
    21         EXEC (@cmd);  
    22         OPEN TableCursor;  
    23         FETCH NEXT FROM TableCursor INTO @Table;  
    24         WHILE @@FETCH_STATUS = 0
    25             BEGIN  
    26                 IF ( @@MICROSOFTVERSION / POWER(2, 24) >= 9 )
    27                     BEGIN
    28            -- SQL 2005 or higher command
    29                         SET @cmd = 'ALTER INDEX ALL ON ' + @Table
    30                             + ' REBUILD WITH (FILLFACTOR = '
    31                             + CONVERT(VARCHAR(3), @fillfactor) + ')';
    32                         EXEC (@cmd);
    33                     END;
    34                 ELSE
    35                     BEGIN
    36           -- SQL 2000 command
    37                         DBCC DBREINDEX(@Table,' ',@fillfactor);  
    38                     END;
    39                 FETCH NEXT FROM TableCursor INTO @Table;  
    40             END;  
    41         CLOSE TableCursor;  
    42         DEALLOCATE TableCursor;  
    43         FETCH NEXT FROM DatabaseCursor INTO @Database;  
    44     END;  
    45 CLOSE DatabaseCursor;  
    46 DEALLOCATE DatabaseCursor; 
  • 相关阅读:
    Windows操作系统堆和栈的区别
    API1——CppSparseFile
    typedef struct 用法详解和用法小结
    开发人员应该用好的一些网站
    Windows编程中的堆管理
    在VC中编译、运行程序的小知识点
    Script:列出数据库中5%以上链式行的表
    解决Linux上11g的ORA00845错误
    Oracle内部错误:ORA00600[kfioTranslateIO03]一例
    Oracle内部错误:ORA00600[2608]一例
  • 原文地址:https://www.cnblogs.com/albertay/p/6737720.html
Copyright © 2011-2022 走看看