How To Drop All Indexes From A Database
- 1
- Add a Comment
Welcome Back! I hope you enjoy the content on this site. If you have not done so already, you may want to subscribe to my RSS feed or become a fan of this blog on Facebook. Thanks for visiting!
I was doing some performance tweaking of a batch job that was hanging and i was suspecting the indexes in the database to have something to do with it shocking up so I used this script to clear all indexes.
Ironically it was a missing index that caused the bottleneck. But here it is for anyone that might need it.
DECLARE @indexName VARCHAR(128) DECLARE @tableName VARCHAR(128) DECLARE [indexes] CURSOR FOR SELECT [sysindexes].[name] AS [Index], [sysobjects].[name] AS [Table] FROM [sysindexes] INNER JOIN [sysobjects] ON [sysindexes].[id] = [sysobjects].[id] WHERE [sysindexes].[name] IS NOT NULL AND [sysobjects].[type] = 'U' OPEN [indexes] FETCH NEXT FROM [indexes] INTO @indexName, @tableName WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'DROP INDEX [' + @indexName + '] ON [' + @tableName + ']' FETCH NEXT FROM [indexes] INTO @indexName, @tableName END CLOSE [indexes] DEALLOCATE [indexes]
Hope this was helpful!
Hatim
One Comment
Mark Kremers
March 25th, 2010
at 8:11am
Just ran into this post and was wondering one thing, why not disable these indexes and see if it helps?
You can do that with the next statement : alter index [INDEXNAME] on [TABLE] disable
re-enabling this index can then be done with the rebuild option in stead of the disable option: alter index [INDEXNAME] on [TABLE] rebuild
regards