Learn more about SQL Server tools



solving sql server problems for millions of dbas and developers since 2006 join MSSQLTips for free SQL Server tips
































Top SQL Server Tools



































   Got a SQL tip?
            We want to know!

Index Rebuilds in SQL Server 2000 vs SQL Server 2005

MSSQLTips author Jeremy Kadlec By:   |   Read Comments   |   Related Tips: 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 Update: 7/12/2006


About the author
MSSQLTips author Jeremy Kadlec
Jeremy Kadlec is the CTO @ Edgewood Solutions, co-founder of MSSQLTips.com, Baltimore SSUG co-leader and SQL Server MVP since 2009.

View all my tips
Related Resources


print tip Print  
Become a paid author





join MSSQLTips for free SQL Server tips     



Learn more about SQL Server tools
Comments and Feedback:

Post a Comment or Question

Keep it clean and stay on the subject or we may delete your comment.
Your email address is not published. Required fields are marked with an asterisk (*)

*Name   *Email Notify for updates



Comments
Get free SQL tips:

*Enter Code refresh code


 
Sponsor Information







Copyright (c) 2006-2014 Edgewood Solutions, LLC All rights reserved
privacy | disclaimer | copyright | advertise | about
authors | contribute | feedback | giveaways | free t-shirt | user groups | community | events | first timer?
Some names and products listed are the registered trademarks of their respective owners.