--查询现有所有数据库表的索引情况
Select indexs.Tab_Name As [表名],indexs.Index_Name As [索引名] ,indexs.[Co_Names] As [索引列],
Ind_Attribute.is_primary_key As [是否主键],Ind_Attribute.is_unique As [是否唯一键],
Ind_Attribute.is_disabled As [是否禁用]
From (
Select Tab_Name,Index_Name, [Co_Names]=stuff((Select ','+[Co_Name] From
( Select tab.Name As Tab_Name,ind.Name As Index_Name,Col.Name As Co_Name From sys.indexes ind
Inner Join sys.tables tab on ind.Object_id = tab.object_id And ind.type in (1,2)
Inner Join sys.index_columns index_columns on tab.object_id = index_columns.object_id And ind.index_id = index_columns.index_id
Inner Join sys.columns Col on tab.object_id = Col.object_id And index_columns.column_id = Col.column_id
) t Where Tab_Name=tb.Tab_Name And Index_Name=tb.Index_Name for xml path('')), 1, 1, '')
From (
Select tab.Name As Tab_Name,ind.Name As Index_Name,Col.Name As Co_Name From sys.indexes ind
Inner Join sys.tables tab on ind.Object_id = tab.object_id And ind.type in (1,2)
Inner Join sys.index_columns index_columns on tab.object_id = index_columns.object_id And ind.index_id = index_columns.index_id
Inner Join sys.columns Col on tab.object_id = Col.object_id And index_columns.column_id = Col.column_id
)tb
Where Tab_Name not like 'sys%'
Group By Tab_Name,Index_Name
) indexs Inner Join sys.indexes Ind_Attribute on indexs.Index_Name = Ind_Attribute.name
Order By indexs.Tab_Name --删除所有非主键索引
Declare @Tab_Name Varchar(200)
Declare @Index_Name Varchar(200) Declare C_DelIndex Cursor Fast_Forward For
Select indexs.Tab_Name,indexs.Index_Name
From (
Select Tab_Name,Index_Name, [Co_Names]=stuff((Select ','+[Co_Name] From
( Select tab.Name As Tab_Name,ind.Name As Index_Name,Col.Name As Co_Name From sys.indexes ind
Inner Join sys.tables tab on ind.Object_id = tab.object_id And ind.type in (1,2)
Inner Join sys.index_columns index_columns on tab.object_id = index_columns.object_id And ind.index_id = index_columns.index_id
Inner Join sys.columns Col on tab.object_id = Col.object_id And index_columns.column_id = Col.column_id
) t Where Tab_Name=tb.Tab_Name And Index_Name=tb.Index_Name for xml path('')), 1, 1, '')
From (
Select tab.Name As Tab_Name,ind.Name As Index_Name,Col.Name As Co_Name From sys.indexes ind
Inner Join sys.tables tab on ind.Object_id = tab.object_id And ind.type in (1,2)
Inner Join sys.index_columns index_columns on tab.object_id = index_columns.object_id And ind.index_id = index_columns.index_id
Inner Join sys.columns Col on tab.object_id = Col.object_id And index_columns.column_id = Col.column_id
)tb
Where Tab_Name not like 'sys%'
Group By Tab_Name,Index_Name
) indexs Inner Join sys.indexes Ind_Attribute on indexs.Index_Name = Ind_Attribute.name
Where Ind_Attribute.is_primary_key = 0
Order By indexs.Tab_Name Open C_DelIndex Fetch Next From C_DelIndex Into @Tab_Name , @Index_Name
While @@Fetch_Status = 0
Begin
Exec('DROP INDEX ' + @Index_Name + ' ON ' + @Tab_Name)
Fetch Next From C_DelIndex Into @Tab_Name , @Index_Name
End
Close C_DelIndex
Deallocate C_DelIndex
--查询现有所有数据库表的统计情况
Select statss.Tab_Name As [表名],statss.Stat_Name As [统计名] ,statss.[Co_Names] As [统计列],
Sta_Attribute.auto_created As [自动创建],Sta_Attribute.user_created As [用户创建]
From (
Select Tab_Name,Stat_Name, [Co_Names]=stuff((Select ','+[Co_Name] From
(
Select tab.Name As Tab_Name,sta.Name As Stat_Name,Col.Name As Co_Name From sys.stats sta
Inner Join sys.tables tab on sta.Object_id = tab.object_id
Inner Join sys.stats_columns stat_columns on tab.object_id = stat_columns.object_id And sta.stats_id = stat_columns.stats_id
Inner Join sys.columns Col on tab.object_id = Col.object_id And stat_columns.column_id = Col.column_id
) t Where Tab_Name=tb.Tab_Name And Stat_Name=tb.Stat_Name for xml path('')), 1, 1, '')
From (
Select tab.Name As Tab_Name,sta.Name As Stat_Name,Col.Name As Co_Name From sys.stats sta
Inner Join sys.tables tab on sta.Object_id = tab.object_id
Inner Join sys.stats_columns stat_columns on tab.object_id = stat_columns.object_id And sta.stats_id = stat_columns.stats_id
Inner Join sys.columns Col on tab.object_id = Col.object_id And stat_columns.column_id = Col.column_id
)tb
Where Tab_Name not like 'sys%'
Group By Tab_Name,Stat_Name
) statss Inner Join sys.stats Sta_Attribute on statss.Stat_Name = Sta_Attribute.name
Order By statss.Tab_Name --删除所有用户创建统计
Declare @Tab_Name Varchar(200)
Declare @Stat_Name Varchar(200) Declare C_DelStat Cursor Fast_Forward For
Select statss.Tab_Name ,statss.Stat_Name
From (
Select Tab_Name,Stat_Name, [Co_Names]=stuff((Select ','+[Co_Name] From
(
Select tab.Name As Tab_Name,sta.Name As Stat_Name,Col.Name As Co_Name From sys.stats sta
Inner Join sys.tables tab on sta.Object_id = tab.object_id
Inner Join sys.stats_columns stat_columns on tab.object_id = stat_columns.object_id And sta.stats_id = stat_columns.stats_id
Inner Join sys.columns Col on tab.object_id = Col.object_id And stat_columns.column_id = Col.column_id
) t Where Tab_Name=tb.Tab_Name And Stat_Name=tb.Stat_Name for xml path('')), 1, 1, '')
From (
Select tab.Name As Tab_Name,sta.Name As Stat_Name,Col.Name As Co_Name From sys.stats sta
Inner Join sys.tables tab on sta.Object_id = tab.object_id
Inner Join sys.stats_columns stat_columns on tab.object_id = stat_columns.object_id And sta.stats_id = stat_columns.stats_id
Inner Join sys.columns Col on tab.object_id = Col.object_id And stat_columns.column_id = Col.column_id
)tb
Where Tab_Name not like 'sys%'
Group By Tab_Name,Stat_Name
) statss Inner Join sys.stats Sta_Attribute on statss.Stat_Name = Sta_Attribute.name
Where Sta_Attribute.user_created = 1
Order By statss.Tab_Name Open C_DelStat Fetch Next From C_DelStat Into @Tab_Name , @Stat_Name
While @@Fetch_Status = 0
Begin
Exec('DROP STATISTICS ' + @Tab_Name + '.' + @Stat_Name)
Fetch Next From C_DelStat Into @Tab_Name , @Stat_Name
End
Close C_DelStat
Deallocate C_DelStat

SQLServer查询当前数据库所有索引及统计,并使用游标批量删除的更多相关文章

  1. SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)

    SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇) 最近真的没有什么精力写文章,天天加班,为了完成这个系列,硬着头皮上了 再看这篇文章之前请大家先看我之前写的第一篇和第二篇 第一篇: ...

  2. 【整理】SQLServer查询各种数据库对象(表,索引,视图,图表,存储过程等)

    首先明确数据库对象的定义:数据库对象定义数据库内容的结构.它们包含在数据库项目中,数据库项目还可以包含数据生成计划和脚本. 常见的数据库对象包括:表,索引,视图,图表,缺省值,规则,触发器,存储过程, ...

  3. SQLSERVER查询整个数据库中某个特定值所在的表和字段的方法

    这几天有业务部门需要使用一个SAP B1老系统  中的报表,但是由于此报表没有加时间条件,导致一旦开始查询 就会导致B1系统异常退出.由于报表对应的SQL 是存在数据库中,所以想通过查找到这个报表的S ...

  4. SQLServer索引及统计信息

    索引除了提高性能,还能维护数据库. 索引是一种存储结构,主要以B-Tree形式存储信息. B-Tree的定义: 1.每个节点最多只有m个节点(m>=2) 2.除了根节点和叶子节点外的每个节点上最 ...

  5. 小觑数据库(SqlServer)查询语句执行过程

    近年来,越来越多的NoSql产品不断的以技术革命的者的身份跳出来:“你看哥是多么的快,你们关型型数据库真是战五渣阿”.是的,高性能的场景下NoSql真的很出彩.而我们关系型数据库只能在墙角哭泣&quo ...

  6. (转)SQLServer查询数据库各种历史记录

    原文地址https://www.cnblogs.com/seusoftware/p/4826958.html 在SQL Server数据库中,从登陆开始,然后做了什么操作,以及数据库里发生了什么,大多 ...

  7. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  8. (转)SQLServer查询数据库各种历史记录

    一. 数据库启动记录 1. 最近一次启动SQL Server的时间 select sqlserver_start_time from sys.dm_os_sys_info; --也可参考系统进程创建的 ...

  9. SQLSERVER | 查询数据库中所有的表的名字 | 查询数据库中的所有数据库名

    SQLSERVER 1.查询某个数据库中所有的表名:  SELECT Name FROM SysObjects Where XType='U' ORDER BY Name 2.查询数据库中的所有数据库 ...

随机推荐

  1. 记一次排查局网内的ARP包 “不存在的” MAC 地址及 “不存在的”IP 所发的ARP包

    xu言: 最近生了一场病,虽然不是给自己找理由不写.不过果不其然还是没有坚持每天发一篇啊.不过,有时间我还是会把一些有意思的事情记录下来.以作备忘吧.这人老了记性就不好了.哈哈哈,当然,也侧面说明了. ...

  2. Configuring Groovy SDK within IntelliJ IDEA

    一.原因 IntelliJ IDEA期待一个the standard Groovy SDK    二.解决方案: 下载安装Groovy就可以了   官网下载地址: http://groovy-lang ...

  3. Django多表查询练习题

    #一 model表:from django.db import models # Create your models here. class Teacher(models.Model): tid=m ...

  4. django权限管理(一)

    权限:权限就是一个包含正则的url. Rbac 权限管理: Role-Based Access Control,基于角色的访问控制.用户通过角色与权限进行关联,一个用户可以有多个角色,一个角色可以有多 ...

  5. Vrrp和Hsrp的区别

    VRRP原理协议简述简单来说,VRRP是一种容错协议,它为具有组播或广播能力的局域网(如以太网)设计,它保证当局域网内主机的下一跳路由器出现故障时,可以及时的由另一台路由器来代替,从而保持通讯的连续性 ...

  6. 网络基础之 并发编程之进程,多路复用,multiprocess模块

    并发 1. 背景知识 2. 什么是进程 3. 进程调度 4. 并发与并行 5 同步\异步\阻塞\非阻塞(重点) 6.multiprocess模块 7.僵尸进程与孤儿进程 1.背景知识 一操作系统的作用 ...

  7. arp欺骗图解

    ARP协议:地址转换协议,工作在OSI模型的数据链路层,在以太网中,网络设备之间互相通信是用MAC地址而不是IP地址,ARP协议就是用来把IP地址转换为MAC地址的. 防止ARP攻击的方法: 1.使用 ...

  8. 第二阶段——个人工作总结DAY06

    1.昨天做了什么:昨天做完了修改密码的界面.(有点丑) 2.今天打算做什么:今天制作时间轴. 3.遇到的困难:无.

  9. php导出大数据scv

    1.我系统要导出30w的数据,刚开始我使用的是: ini_set('memory_limit', '1024M');set_time_limit(0); header("Content-ty ...

  10. leetcode-algorithms-34 Find First and Last Position of Element in Sorted Array

    leetcode-algorithms-34 Find First and Last Position of Element in Sorted Array Given an array of int ...