Learn more about SQL Server tools

mssqltips logo
 

Tutorials          DBA          Dev          BI          Career          Categories          Webcasts          Whitepapers          Today's Tip          Join

Tutorials      DBA      Dev      BI      Categories      Webcasts

DBA    Dev    BI    Categories

 
Untangle TempDB Performance with SQL Diagnostic Manager - Free Webinar
 

Index Rebuilds in SQL Server 2000 vs SQL Server 2005


By:   |   Last Updated: 2006-07-12   |   Comments   |   Related Tips: 1 | 2 | 3 | 4 | 5 | 6 | More > Fragmentation and Index Maintenance

Problem
Index rebuilds are a core component for database maintenance which ultimately improve performance and the user experience with the application.  DBAs and Developers alike have become accustom to much of the syntax in SQL Server 2000 and know the purpose for each set of code.  In SQL Server 2005, the original syntax to support index maintenance is still supported, but will be removed in a future version of SQL Server.  As such, now is the time to get up to speed on the new syntax to start to incorporate this code into your environment.

Solution
Below outlines the index rebuilding code changes from SQL Server 2000 to 2005 with the purpose of the code and a sample.

SQL Server 2000 SQL Server 2005
CREATE INDEX with DROP_EXISTING - Creates a new index with the same name and drops the current index while ensuring the nonclustered indexes are not rebuilt twice.

CREATE CLUSTERED INDEX au_id_clidx
ON Authors (au_id)
WITH DROP_EXISTING
GO

 

CREATE INDEX with DROP_EXISTING - Creates a new index with the same name and drops the current index while ensuring the nonclustered indexes are not rebuilt twice.

CREATE CLUSTERED INDEX au_id_clidx
ON dbo.Authors (au_id)
WITH (DROP_EXISTING = ON);
GO

DROP INDEX and CREATE INDEX - Removes the au_id_ind index on the authors table.

DROP INDEX authors.au_id_ind
GO

CREATE INDEX au_id_ind
ON Authors (au_id ASC)
GO

 

DROP INDEX and CREATE INDEX - Removes the au_id_ind index on the authors table, which is the equal functionality as SQL Server 2000.

DROP INDEX authors.au_id_ind;
GO

CREATE INDEX au_id_ind
ON Authors (au_id ASC);
GO

DBCC DBREINDEX - Rebuild all of the indexes on the authors table with 80% fill factor.

DBCC DBREINDEX (authors, '', 80)
GO

ALTER INDEX - Rebuild all of the indexes on the Authors table with 80% fill factor, sort the intermediary data in TempDB and automatic updating of the statistics are enabled.

ALTER INDEX ALL
ON Authors
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = OFF);
GO

 

DBCC INDEXDEFRAG - Defragments the au_id_ind index on the Authors table.

DBCC INDEXDEFRAG (Pubs, Authors, au_id_ind)
GO

 

ALTER INDEX - Defragment the au_id_ind index on the Authors table which is intended to be a truly online operation.

ALTER INDEX au_id_ind ON dbo.Authors REORGANIZE;
GO

Next Steps

  • Review your existing maintenance scripts and begin to convert your scripts from the SQL Server 2000 syntax to the 2005 syntax.
  • During the conversion, determine if you have an opportunity to enhance your maintenance scripts.
  • As you build new indexes determine your naming standard for consistency across your environment.


Last Updated: 2006-07-12


next webcast button


next tip button



About the author





Post a comment or let the author know this tip helped.

All comments are reviewed, so stay on subject or we may delete your comment. Note: your email address is not published. Required fields are marked with an asterisk (*).

*Name    *Email    Email me updates 


Signup for our newsletter
 I agree by submitting my data to receive communications, account updates and/or special offers about SQL Server from MSSQLTips and/or its Sponsors. I have read the privacy statement and understand I may unsubscribe at any time.



    



Learn more about SQL Server tools