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
sql server 索引检测的更多相关文章
- sql server 索引总结三
一.非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此. 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向 ...
- 【译】SQL Server索引进阶第八篇:唯一索引
原文:[译]SQL Server索引进阶第八篇:唯一索引 索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就 ...
- 转: SQL Server索引的维护 - 索引碎片、填充因子
转:http://www.cnblogs.com/kissdodog/archive/2013/06/14/3135412.html 实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题 ...
- SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>
一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...
- SQL Server— 存在检测、建库、 建表、约束、外键、级联删除
/******************************************************************************** *主题: SQL Server- 存 ...
- SQL Server 索引结构及其使用(一)
转载:SQL Server 索引结构及其使用(一) 作者:freedk 一.深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clus ...
- SQL Server 索引的图形界面操作 <第十二篇>
一.索引的图形界面操作 SQL Server非常强大的就是图形界面操作.关于索引方面也一样那么强大,很多操作比如说重建索引啊,查看各种统计信息啊,都能够通过图形界面快速查看和操作,下面来看看SQL S ...
- SQL Server索引设计 <第五篇>
SQL Server索引的设计主要考虑因素如下: 检查WHERE条件和连接条件列: 使用窄索引: 检查列的选择性: 检查列的数据类型: 考虑列顺序: 考虑索引类型(聚集索引OR非聚集索引): 一.检查 ...
- SQL Server索引的维护 - 索引碎片、填充因子 <第三篇>
实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故障排除工具是一样的,因为处理是相同的. 对于非常小的表(比64KB小得多), ...
- SQL Server索引进阶:第十级,索引内部结构
原文地址: Stairway to SQL Server Indexes: Level 10,Index Internal Structure 本文是SQL Server索引进阶系列(Stairway ...
随机推荐
- Java-面向对象进阶 方法继承、重写
1.继承 子类继承父类后自动拥有父类非私有的属性和方法 Java中,一个父类可以被多个子类继承,一个子类只能继承一个父类 除了继承父类的属性和方法外,子类还拥有自己特有的属性和方法 如果子类的方法与父 ...
- viewpager加fragment可滑动加radio跟随滑动
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener, V ...
- 将\u8BF7字符串转换为汉字
转发自 将\u8BF7\u9009\u62E9 字符串转为汉字的代码_javascript技巧_脚本之家 链接:https://www.jb51.net/article/25187.htm
- 对象转Map
Map<String, Object> userMap = BeanUtil.beanToMap(userDTO);
- linux发展史及软件配置
linux岗位需求 # 1.岗位需求 自动化运维,容器运维,DBA,IDC运维(不建议) ps:linux岗位会的越多给的越多 linux工作本质 linux简要发展史 # 1.发展 1991年,芬兰 ...
- mysql命令行添加用户并赋予权限
mysql> create user 'admin'@'%' identified by '123456';Query OK, 0 rows affectedmysql> FLUSH PR ...
- linux下nginx的(启动、重启、关闭)
1. 首先利用配置文件启动nginx. 命令: nginx -c /usr/local/nginx/conf/nginx.conf 重启服务: service nginx restart 2. 快速停 ...
- css如何实现(animation)跑马灯效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HDOJ--1010题C++
有两点需要注意,第一点就是,题意是指在第T秒时门才打开,并不是越早到门口就能越早出去,而是只要存在指定长的路径即可以出去. 第二点,每次深搜发现答案不符都必须将点重新初始化.#include<i ...
- 第08组Beta冲刺(3/4)
队名 八组评分了吗 组长博客链接(2分) 组员1李昕晖(组长) 过去两天完成了哪些任务 文字/口头描述 了解各个小组的进度与难以攻破的地方,晚上安排开会,安排新的冲刺任务. 重新分配小组及个人任务. ...