【转】SQL SERVER获取索引脚本
关于如何获取索引脚本的语句很多,上次在项目中需要去查询并获取索引脚本,所以写了一个简单的查询语句来进行获取。
WITH idxcol
AS ( SELECT
i.object_id ,
i.index_id ,
OBJECT_NAME(i.object_id) AS objname ,
i.name AS idxname ,
ocol.name AS colname ,
i.type AS idxtype ,
i.type_desc AS idxtypedesc ,
i.is_unique ,
i.is_primary_key ,
i.is_unique_constraint ,
i.fill_factor ,
icol.key_ordinal AS idxcoloder ,
icol.is_descending_key ,
icol.is_included_column ,
pt.row_count ,
pt.used_page_count * 8 *1024.0 / POWER(1024, 2) AS [usedrowpage_mb] ,
pt.reserved_page_count * 8 *1024.0 / POWER(1024, 2) AS [allrowpage_MB]--,
--*
FROM
sys.indexes i ,
sys.index_columns icol ,
sys.columns ocol ,
sys.dm_db_partition_stats pt
WHERE
i.object_id = icol.object_id
AND i.index_id = icol.index_id
AND icol.object_id = ocol.object_id
AND icol.column_id = ocol.column_id
AND i.object_id = pt.object_id
AND i.index_id = pt.index_id
AND EXISTS ( SELECT
1
FROM
sys.objects o
WHERE
o.object_id = i.object_id
AND o.type = 'U' ))
SELECT
* ,
N'CREATE ' + t.idxtypedesc COLLATE Latin1_General_CI_AS_KS_WS +
N' INDEX ' + t.idxname COLLATE Latin1_General_CI_AS_KS_WS +
N' ON ' + t.objname COLLATE Latin1_General_CI_AS_KS_WS +
N'(' + CASE WHEN t.colsinc IS NULL THEN
t.cols COLLATE Latin1_General_CI_AS_KS_WS
ELSE
--REPLACE(cols,t.colsinc,'') COLLATE Latin1_General_CI_AS_KS_WS
SUBSTRING(cols,LEN(colsinc)+2,LEN(cols)-LEN(colsinc))
END
+ N')'+CASE WHEN t.colsinc IS NOT NULL THEN ' INCLUDE('+t.colsinc+')' ELSE ' ' END
FROM
( SELECT
DISTINCT
object_id ,
index_id ,
objname ,
idxname ,
idxtypedesc ,
CASE WHEN is_primary_key = 1 THEN 'prmiary key'
ELSE CASE WHEN is_unique_constraint = 1 THEN 'unique constraint'
ELSE CASE WHEN is_unique = 1 THEN 'Unique '
ELSE ''
END + idxtypedesc
END
END AS typedesc ,
STUFF(( SELECT
',' + colname + CASE WHEN is_descending_key = 1 THEN ' desc'
ELSE ''
END
FROM
idxcol
WHERE
object_id = c.object_id
AND index_id = c.index_id
ORDER BY
idxcoloder
FOR
XML PATH('') ), 1, 1, '') AS cols ,
STUFF(( SELECT
',' + colname
FROM
idxcol
WHERE
object_id = c.object_id
AND index_id = c.index_id
AND is_included_column = 1
ORDER BY
idxcoloder
FOR
XML PATH('') ), 1, 1, '') AS colsinc ,
row_count ,
[allrowpage_MB] ,
[usedrowpage_mb] ,
[allrowpage_MB] - [usedrowpage_mb] AS unusedrowpage_mb
FROM
idxcol c ) AS t
【转】SQL SERVER获取索引脚本的更多相关文章
- SQL Server获取索引创建时间&重建时间&重组时间
之前写过一篇博客"SQL Server中是否可以准确获取最后一次索引重建的时间?",里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild ...
- 公司内部培训SQL Server传统索引结构PPT分享
公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E ...
- 常用脚本--SQL Server获取OS日志
--=================================================== --SQL Server获取OS日志: ), ), ), ) select @start_d ...
- SQL Server获取下一个编码字符串的实现方案分割和进位
我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...
- [转]SQL SERVER整理索引碎片测试
SQL SERVER整理索引碎片测试 SQL SERVER整理索引的方法也就这么几种,而且老是自作聪明的加入智能判断很不爽,还是比DBMS_ADVISOR差远了: 1SQL SERVER 2000/2 ...
- SQL Server创建索引(转)
什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音. ...
- SQL Server获取下一个编码字符实现继续重构与增强
我在SQL Server获取下一个编码字符实现的博文中,虽然实现了这个问题,但是感觉维护起来比较麻烦,例如如果调整编码字符串的固定长度,就需要变更三个函数,这样的为何成本确实比较大.面向对象编 ...
- SQL SERVER获取数据库文件信息
MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: SELECT dbf.file_id AS FileID , dbf.name AS [FileName] , s.fi ...
- 理解SQL Server中索引的概念
T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他 简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能 ...
随机推荐
- [jquery]判断checkbox是否选中
if ($("#id").is(":checked"))
- (3)python 列表和元组
列表 元组 字段 等都是一种数据结构.其中列表和元组比较相似都是顺序保存的,都可以通过索引来找到元素. 列表和元组的主要区别:列表是可以修改的,元组不可以修改.列表用[]表示,元组用()表示 一.列表 ...
- 11.5NOIP2018提高组模拟题
书信(letter) Description 有 n 个小朋友, 编号为 1 到 n, 他们每人写了一封信, 放到了一个信箱里, 接下来每个人从中抽取一封书信. 显然, 这样一共有 n!种拿到书信的情 ...
- 洛谷——P1586 四方定理
P1586 四方定理 题目描述 四方定理是众所周知的:任意一个正整数nn,可以分解为不超过四个整数的平方和.例如:25=1^{2}+2^{2}+2^{2}+4^{2}25=12+22+22+42,当然 ...
- 洛谷——P1407 工资
P1407 工资 题目描述 有一家世界级大企业,他们经过调查,发现了一个奇特的现象,竟然在自己的公司里,有超过一半的雇员,他们的工资完全相同! 公布了这项调查结果后,众多老板对于这一现象很感兴趣,他们 ...
- Coloring Dominoes
问题 E: Coloring Dominoes 时间限制: 1 Sec 内存限制: 128 MB提交: 279 解决: 95[提交] [状态] [讨论版] [命题人:] 题目描述 We have ...
- 数字 function
SELECT TRUNC(15.79), TRUNC(), ROUND(15.79), ), ), FLOOR(26.983), CEIL(26.123), ), ), ), MOD(,) FROM ...
- RPD Volume 168 Issue 4 March 2016 评论1
GEANT4 calculations of neutron dose in radiation protection using a homogeneous phantom and a Chines ...
- 软Raid5,LVM,3T大硬盘纠缠操作的问题
新服务器,4块3T大硬盘,软Raid5 组建 加上LVM分区各种一通操作... 悲催的是经过4天的软raid rebuild,最终状态给我FAIL了,当看到raid的state[ State : cl ...
- AOJ 2266 Cache Strategy(费用流)
[题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2266 [题目大意] 有M个桶,N个球,球编号为1到N,每个球都有重量 ...