Ian*_*ose 2 sql-server indexing
我即将编写一个脚本来向数据库添加新索引,我希望无论数据库具有当前索引,该脚本都能正常工作.
因此,脚本的第一步应该是删除所有当前索引.(我可以很容易地运行.net代码,但我认为TSQL对于这种类型的东西会少一些痛苦)
(这是用于小型数据库的开发,所以我不介意它是不是管理索引的最快方法,这需要适用于SqlServer 2005和SqlServer 2008)
我在http://refactormycode.com/codes/522-drop-all-indexes-in-sql-server找到了这个.它似乎删除当前数据库中的所有索引:
Declare @Index varchar(128)
Declare @Table varchar(128)
Select
SysIndexes.Name As 'Index',
SysObjects.Name As 'Table'
Into
#Indexes
From
SysIndexes
Inner Join SysObjects On
SysObjects.id = SysIndexes.id
Where
SysIndexes.Name Is Not Null
and SysObjects.XType = 'U'
Order By
SysIndexes.Name,
SysObjects.Name
While (Select Count(*) From #Indexes) > 0
Begin
Set @Index = (Select Top 1 [Index] From #Indexes)
Set @Table = (Select Top 1 [Table] From #Indexes)
--Print 'Drop Index [' + @Index + '] On [' + @Table + ']' + Char(13)
Exec ('Drop Index [' + @Index + '] On [' + @Table + ']')
Delete From #Indexes Where [Index] = @Index and [Table] = @Table
End
Drop Table #Indexes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13166 次 |
| 最近记录: |