ms sql server 2005版本以上查询数据库索引信息

原创 2012年12月17日 11:07:38

ms sql  server 2005版本以上查询数据库索引信息,并生成创建索引,删除索引的语句,对DBA管理索引很有帮助

ms sql  server 2005数据库索引有include功能,对查询优化很有用,通过此代码可以生成创建索引语句中可以生成包含 include子句的索引,在代码中可以指定表名

 


;with TB
as
(
	Select 
		TB.object_id,
		Schema_name = Sch.name,
		table_name = TB.name
	From sys.tables TB
		Inner join sys.schemas Sch
			on TB.schema_id = Sch.schema_id
	where TB.is_ms_shipped = 0	
),
IXC AS
(
	SELECT
		IXC.object_id,IXC.index_id,IXC.index_column_id,
		IXC.is_descending_key,IXC.is_included_column,
		column_name = C.name
	FROM SYS.index_columns IXC
		INNER JOIN SYS.columns C
		ON IXC.object_id = C.object_id
		AND IXC.column_id = C.column_id
)
,
IX as
(
	Select
		IX.object_id,
		index_name = IX.name,
		index_type_desc = IX.type_desc,
		IX.is_unique,IX.is_primary_key,IX.is_unique_constraint,
		IX.is_disabled,
		index_columns_TEMP = STUFF(IXC_COL.index_columns,1,1,N''),
		index_columns = Case when IXC_COL_INCLUDE.index_columns_includes IS NOT NULL THEN STUFF(LEFT(IXC_COL.index_columns,LEN(IXC_COL.index_columns)-LEN(IXC_COL_INCLUDE.index_columns_includes)),1,1,N'') ELSE STUFF(IXC_COL.index_columns,1,1,N'') END,
		index_columns_includes = STUFF(IXC_COL_INCLUDE.index_columns_includes,1,1,N'')	
	From sys.indexes IX
		CROSS APPLY(
			SELECT index_columns = (
				SELECT 
					N','+QUOTENAME(column_name)
				FROM IXC
				WHERE object_id = IX.object_id
					AND index_id = IX.index_id
				ORDER BY index_column_id
				FOR XML PATH(''),ROOT('r'),TYPE						
			).value('/r[1]','nvarchar(max)')
		) IXC_COL
		OUTER APPLY(
			SELECT
				index_columns_includes = (
					SELECT 
						N','+QUOTENAME(column_name)
					FROM IXC
					WHERE object_id = IX.object_id
						AND index_id = IX.index_id
						AND is_included_column = 1
					ORDER BY index_column_id
					FOR XML PATH(''),ROOT('r'),TYPE						
			).value('/r[1]','nvarchar(max)')		
				) IXC_COL_INCLUDE
		WHERE index_id >0	
)
SELECT 
	IX.index_name,
	N'Create index '+IX.index_name+N' on '+TB.table_name+N' ('+IX.index_columns+N')'+
	Case when IX.index_columns_includes is not null then Char(13)+N'INCLUDE ('+IX.index_columns_includes+N')'
	Else N'' End AS N'创建索引',
	N'Drop index '+TB.table_name+N'.'+IX.index_name,
	TB.Schema_name,TB.table_name,IX.index_name,IX.index_type_desc,
	IX.is_unique,IX.is_primary_key,IX.is_unique_constraint,
	IX.is_disabled,
	IX.index_columns,
	IX.index_columns_includes
FROM TB
	INNER JOIN IX
		ON TB.object_id = IX.object_id
ORDER BY Schema_name,table_name,IX.index_name	




 

 

MS SQL 查询数据库中所有索引以及对应的表字段 SQL Server Profiler性能跟踪

新项目上线,需要对库里的表进行相关索引检查。这儿首先需要查看一下库里的表那些有索引,然后用SQL Server Profiler进行跟踪,检查SQL语句性能,查询频率等。 查询库里所有索引相关信...
  • qxyywy
  • qxyywy
  • 2014年06月18日 11:36
  • 802

MS SQL 获取数据库名,表名,列名,说明等信息(SQL Server 2005 测试通过)

--需要验证,部分验证 MS SQL 获取数据库名,表名,列名,说明等信息 /*******************************************************...

MS SQL 获取数据库名,表名,列名,说明等信息(SQL Server 2005 测试通过)

  MS SQL 获取数据库名,表名,列名,说明等信息/************************************************************************...

MS Sql 2005 全文索引

  • 2008年07月02日 22:58
  • 1.1MB
  • 下载

MS SQL 2005基本操作(一):SQL语句对表、视图、索引和同义词的操作

1. 创建表Use db_ProductMngCreat table t_ProductInfo(ProductCode varchar(10) Not Null,DeptNo varchar(3) ...

MS SQL 2005 连接 sybase ASA 数据库远程链接问题

https://support.microsoft.com/kb/280102/zh-cn?ppud=4&wa=wsignin1.0       本文内容 概要 设置链接服务器到 S...
  • mfkpie
  • mfkpie
  • 2014年12月16日 15:01
  • 1743

ms sql 2005数据库创建快照脚本

  • 2014年09月10日 13:21
  • 85B
  • 下载

【原创】SQL Server中查询数据库及表的信息语句

/* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句。 -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于...
  • tjs_125
  • tjs_125
  • 2012年04月25日 23:22
  • 249

ms sql 2005 完整卸载,含工具

ms sql 2005 完整卸载

ms sql 2005 2008 通用表分页存储过程

USE [LevcnBase] GO /****** Object: StoredProcedure [dbo].[Paging] Script Date: 11/09/2011 18:10:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ms sql server 2005版本以上查询数据库索引信息
举报原因:
原因补充:

(最多只允许输入30个字)