删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005,

简介: 原文:删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005, --删除指定表中所有索引 --用法:declare @tableName varchar(100) --set @tableName='表名' --表名 ,根据实际情况替换 --exe...
原文: 删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005,

--删除指定表中所有索引
--用法:declare @tableName varchar(100) 
--set @tableName='表名' --表名 ,根据实际情况替换
--exec sp_dropindex @tableName
if exists(select 1 from sysobjects where id = object_id('dropindex') and xtype = 'P') 
drop procedure dropindex 
go

create procedure dropindex @tableName varchar(100)=null --表名
as

if @tableName is null 
begin 
 raiserror('必须提供@tableName参数',12,1) 
 return 
end

create table # ( 
 id int identity, 
 index_name varchar(50), 
 index_description varchar(1000), 
 index_keys varchar(100) 
)

insert #(index_name,index_description,index_keys) 
exec sp_helpindex @tableName

declare @i int
declare @sql varchar(100)
 
set @i = 1

while @i<=(select max(id) from #) 
begin 
 if exists(select 1 from sysobjects A join # B on A.name=B.index_name where B.id=@i and A.xtype in ('PK','UQ')) 
 begin 
  select @sql = 'alter table '+ @tableName +' drop constraint ' + (select index_name from # where id = @i) 
 end 
 else 
 begin 
  select @sql = 'drop index '+ @tableName + '.' + (select index_name from # where id=@i) 
 end 
 
-- print(@sql) 
    exec(@sql) 
 set @i=@i+1 
end

drop table #

go

 

先执行上面的SQL语句,然后再执行此存储过程即可

 

--删除索引
declare @tableName varchar(100) 
set @tableName='table' --表名 ,根据实际情况替换
exec dropindex @tableName
GO

 

目录
相关文章
|
9月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
12月前
|
SQL 存储 关系型数据库
SQL优化策略与实践:组合索引与最左前缀原则详解
本文介绍了SQL优化的多种方式,包括优化查询语句(避免使用SELECT *、减少数据处理量)、使用索引(创建合适索引类型)、查询缓存、优化表结构、使用存储过程和触发器、批量处理以及分析和监控数据库性能。同时,文章详细讲解了组合索引的概念及其最左前缀原则,即MySQL从索引的最左列开始匹配条件,若跳过最左列,则索引失效。通过示例代码,展示了如何在实际场景中应用这些优化策略,以提高数据库查询效率和系统响应速度。
604 10
|
SQL 索引
【YashanDB知识库】字段加上索引后,SQL查询不到结果
【YashanDB知识库】字段加上索引后,SQL查询不到结果
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
540 2
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
332 3
|
SQL 关系型数据库 MySQL
如何确认SQL用了索引:详细技巧与方法
在数据库管理中,索引是提高SQL查询性能的重要手段
2747 5
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
180 0
|
SQL 存储 关系型数据库
SQL默认索引是什么:深入解析与技巧
在SQL数据库中,索引是一种用于提高查询性能的重要数据结构
|
SQL 存储 关系型数据库
SQL默认索引是什么
在SQL数据库中,索引是一种用于提高查询性能的数据结构
|
SQL 关系型数据库 MySQL
如何确认SQL用了索引
在数据库管理和优化过程中,确认SQL查询是否使用了索引是一个至关重要的步骤
下一篇
开通oss服务