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	




 

 

SQL Server 2005数据库高级应用

掌握数据库的设计思想,需求分析能力,熟练使用数据库高级查询,函数与索引,视图,数据库编程,游标,事务处理,存储过程,触发器
  • 2016年07月08日 08:24

MS SQL Server 2005)各种版本介绍!

SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存...
  • zhangliang2121
  • zhangliang2121
  • 2008-06-21 09:32:00
  • 1669

Sql Server2005 查看数据库表状态和查看索引碎片状态

DBCC CHECKDB  查看数据库表状态   DBCC SHOWCONTIG  查看索引碎片状态   创建索引 CREATE NONCLUSTERED INDEX branch_move...
  • sjdl9396
  • sjdl9396
  • 2011-09-14 17:10:44
  • 1011

SQLSERVER 2000 以及SQL Server 2005的版本号

本文主要列出了SQLSERVER 2000 以及SQL Server 2005的版本号:  首先是SQL SERVER 2000,主要包括:  RTM 2000.80.194.0  SQL Serve...
  • leamonjxl
  • leamonjxl
  • 2011-07-08 14:44:26
  • 4842

最优化的ms sql server分页sql语句

 作者:yanekemail:yanek@126.com特点:一次查询,数据库只返回一页的数据。而不是取出所有的数据。说明:pagesize: 每页显示记录数cureentpage:当前页数selec...
  • 5iasp
  • 5iasp
  • 2006-04-14 15:47:00
  • 3868

MS SQL Server 2005 开发版(32位与64位)安装文件

  • 2018年01月19日 17:20
  • 49B
  • 下载

Microsoft.SQL.Server.2005 (32位) SP2 简体中文企业版

SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存...
  • sjzwl
  • sjzwl
  • 2007-11-13 13:11:00
  • 9499

Microsoft SQL Server 2005 界面概览及 WITH 语法实例(图集)

Microsoft SQL Server 2005 界面概览及 WITH 语法实例-----------------------------------------------------------...
  • ranzj
  • ranzj
  • 2008-03-08 18:01:00
  • 970

sqlmonitoring

  • 2012年11月27日 17:43
  • 230KB
  • 下载

Microsoft SQL 2005 Server Express Edition学习版下载

  • 2009年02月17日 09:58
  • 40.05MB
  • 下载
收藏助手
不良信息举报
您举报文章:ms sql server 2005版本以上查询数据库索引信息
举报原因:
原因补充:

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