-- 声明表变量
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

sql server 索引检测的更多相关文章

  1. sql server 索引总结三

    一.非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此. 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向 ...

  2. 【译】SQL Server索引进阶第八篇:唯一索引

    原文:[译]SQL Server索引进阶第八篇:唯一索引     索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就 ...

  3. 转: SQL Server索引的维护 - 索引碎片、填充因子

    转:http://www.cnblogs.com/kissdodog/archive/2013/06/14/3135412.html 实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题 ...

  4. SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>

    一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...

  5. SQL Server— 存在检测、建库、 建表、约束、外键、级联删除

    /******************************************************************************** *主题: SQL Server- 存 ...

  6. SQL Server 索引结构及其使用(一)

    转载:SQL Server 索引结构及其使用(一) 作者:freedk 一.深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clus ...

  7. SQL Server 索引的图形界面操作 <第十二篇>

    一.索引的图形界面操作 SQL Server非常强大的就是图形界面操作.关于索引方面也一样那么强大,很多操作比如说重建索引啊,查看各种统计信息啊,都能够通过图形界面快速查看和操作,下面来看看SQL S ...

  8. SQL Server索引设计 <第五篇>

    SQL Server索引的设计主要考虑因素如下: 检查WHERE条件和连接条件列: 使用窄索引: 检查列的选择性: 检查列的数据类型: 考虑列顺序: 考虑索引类型(聚集索引OR非聚集索引): 一.检查 ...

  9. SQL Server索引的维护 - 索引碎片、填充因子 <第三篇>

    实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故障排除工具是一样的,因为处理是相同的. 对于非常小的表(比64KB小得多), ...

  10. SQL Server索引进阶:第十级,索引内部结构

    原文地址: Stairway to SQL Server Indexes: Level 10,Index Internal Structure 本文是SQL Server索引进阶系列(Stairway ...

随机推荐

  1. 点击dgv某列的单元格时触发事件的方法

    private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.Colu ...

  2. flex布局的相关注意事项

    文献参考地址:https://www.cnblogs.com/qcloud1001/p/9848619.html 重点事项: 弹性容器的属性 作用于交叉轴 align-items :对单行起作用 al ...

  3. 大规模人脸分类—allgather操作(1)

     pytorch中 all_gather 操作是不进行梯度回传的.在计算图构建中如果需要经过all_gather操作后,仍需要将梯度回传给各个进程中的allgather前的对应变量,则需要重新继承to ...

  4. 时钟频率(HZ)与数据传输速率(bit/s)的关系-转载

    (24条消息) 时钟频率(HZ)与数据传输速率(bit/s)的关系_子曰小玖的博客-CSDN博客_速率和频率的关系 时钟频率(HZ)与数据传输速率(bit/s)两者是相同的概念.举例:IIC传输位速率 ...

  5. vue3中使用vite-ts构建项目时tsconfig.json的配置

    在上一次创建vue3项目在tsconfig.json中配置了文件别名以后,格式校验提示 es3什么鬼,便去看了一下tsconfig.json的配置,以此学习 { "compilerOptio ...

  6. memoのQt自动调整窗口尺寸

    折腾了好久,好久.终于搞出一个自认为还算可以的方案: QTimer::singleShot(0, this, [this]{ this->adjustSize(); }); 这个解决方案确实有点 ...

  7. 给定两个字符串,均只包含英文字母,需区分大小写,一个是源字符串SS(长度<1000), 另一个是目标字符串TS(长度<1000),请问能否通过删除SS中的字符(不改变顺序)将它变换成TS,如果可以输出“YES",不可以则输出“NO"。 输入说明:第一行为源字符串SS,第二行为目标字符串TS。

    import java.util.Scanner;/*    给定两个字符串,均只包含英文字母,需区分大小写,一个是源字符串SS(长度<1000),    另一个是目标字符串TS(长度<1 ...

  8. 20211306 2021-2022-2 《Python程序设计》第二次实验报告

    20211306 2021-2022-2 <Python程序设计>第二次实验报告 课程:<Python程序设计> 班级:2113 姓名:丁文博 学号:20211306 实验教师 ...

  9. pycharm怎么查看某个包pycharm怎么查看某个包的源码的源码

    安装ctrl点击对应的函数名或是包名即可

  10. app内打开外部第三方瞎下载链接

    Q:我用cordova开发项目,想在app内跳转外部链接,安装了cordova-plugin-inappbrowser后确实可以跳转,但是跳转的页面有个按钮,原本点击会下载app,现在点击后毫无反应, ...