zoukankan      html  css  js  c++  java
  • sql server 索引检测

    -- 声明表变量
    DECLARE @userTable TABLE (table_name NVARCHAR(20));
    
    -- 将源表中的数据插入到表变量中
    INSERT INTO @userTable(table_name) SELECT name FROM sysobjects WHERE xtype = 'U' AND name LIKE 'user_[1234567890]%';
    
    -- 声明变量
    DECLARE @sql NVARCHAR(MAX),@index_name NVARCHAR(30),@table_name NVARCHAR(20);
    WHILE EXISTS(SELECT table_name FROM @userTable)
        BEGIN
            SELECT @table_name = table_name FROM @userTable ORDER BY table_name;
            BEGIN TRY
                --检查索引
                SET @index_name = 'IX_' + @table_name;
                IF NOT EXISTS(SELECT 1 FROM sysindexes a 
                                       JOIN sysindexkeys b ON a.id = b.id AND a.indid = b.indid 
                                       JOIN sysobjects c ON b.id = c.id
                                       JOIN syscolumns d ON b.id = d.id AND b.colid = d.colid
                                       WHERE a.indid NOT IN(0,255) AND c.xtype = 'U' AND c.name = @table_name AND a.name = @index_name)
                BEGIN
                    SET @sql='CREATE NONCLUSTERED INDEX '+@index_name+' ON '+@table_name+'(userId ASC)
                              INCLUDE(id,......)
                              WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]'
                    EXEC (@sql);
                END
                --检查唯一索引
                SET @index_name='IXDistinct_' + @table_name;
                IF NOT EXISTS(SELECT 1 FROM sysindexes a 
                                       JOIN sysindexkeys b ON a.id=b.id AND a.indid=b.indid 
                                       JOIN sysobjects c ON b.id=c.id 
                                       JOIN syscolumns d ON b.id=d.id AND b.colid=d.colid
                                       WHERE a.indid NOT IN(0,255) AND c.xtype='U' AND c.name=@table_name AND a.name=@index_name)
            BEGIN
                SET @sql='ALTER TABLE ' + @table_name + ' ADD  CONSTRAINT '+@index_name+' UNIQUE NONCLUSTERED(userId ASC,.....)
                          WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]'
                EXEC (@sql);
                EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'userId和....组成的唯一键索引' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=@table_name, @level2type=N'CONSTRAINT',@level2name=@index_name
            END
            END TRY
            BEGIN CATCH
              SELECT @table_name AS tablename,
                  ERROR_MESSAGE() AS ErrorMessage,
                     ERROR_SEVERITY() AS ErrorSeverity,
                     ERROR_STATE() AS ErrorState    
            END CATCH 
            DELETE FROM @userTable WHERE table_name=@table_name;
        END
  • 相关阅读:
    P3015 [USACO11FEB]最好的括号Best Parenthesis
    P1944 最长括号匹配_NOI导刊2009提高(1)
    P2328 [SCOI2005]超级格雷码
    P2308 添加括号
    P5657 格雷码【民间数据】
    P2196 挖地雷
    P5020 货币系统
    括号序列模型--序列dp--U86873 小Y的精灵国机房之旅
    P1033 自由落体
    P1017 进制转换
  • 原文地址:https://www.cnblogs.com/zhm001/p/14543167.html
Copyright © 2011-2022 走看看