/SQLIndexManager

Analyze and fix index fragmentation for SQL Server / Azure

Primary LanguageC#GNU General Public License v3.0GPL-3.0

SQL Index Manager

This tool lets you quickly and easily find out the status of your indexes and discover which databases need maintenance.
You can do maintenance through the UI, or generate a T-SQL script to run in SSMS.

Key Features

  • An incredibly fast describe engine
  • Multiple databases scanning
  • Advice on rebuilding or reorganizing
  • Analysis of fragmentation results
  • Configurable fragmentation thresholds
  • One-click maintenance
  • Command-line automation
  • Automatic T-SQL script generation
  • Columnstore maintenance support
  • Collecting missing indexes
  • Drop or disable unused indexes
  • Index rebuild with compression options
  • Export of scan results into Excel, CSV, HTML and text files
  • Support for any editions of SQL Server 2008+ and Azure
  • And a lot of other improvements :)

Latest Version

You can download .zip file with the latest build of the master branch from Releases

Future Plans

  • Improvements in command-line automation
  • Detect duplicate and unused indexes
  • Statistics maintenance

Topics

SQL Index Manager – Free GUI Tool for Index Maintenance on SQL Server and Azure

Screenshots

SQL Index Manager SQL Index Manager SQL Index Manager

Command Line

/connection "Data Source=HOMEPC\SQL_2017;Integrated Security=True;User ID=HOMEPC\PC"

This switch is used to specify connection string

/databases "AdventureWorks2017;AdventureWorks2012;msdb"

This switch is used to specify databases to manage indexes in

/connectiontimeout 30

This switch is used to specify connection timeout in seconds. Overrides value specified in the connection string

/commandtimeout 120

This switch is used to specify command execution timeout in seconds. Overrides default option (90 seconds)

/online

This switch is used to rebuild indexes with online option

/ignoreheap

This switch is used to ignore any heaps during maintenance

/ignorecolumnstore

This switch is used to ignore any columnstore indexes during maintenance

/ignorebtree

This switch is used to ignore any b-tree indexes during maintenance

/maxdop 8

Configure the max degree of parallelism during maintenance. Overrides server option

/reorganizethreshold 15

Specifies reorganize the fragmentation threshold in %. Overrides default option (15%)

/rebuildthreshold 30

Specifies rebuild the fragmentation threshold in %. Overrides default option (30%)

/minindexsize 32

This switch is used to specify the minimum index size in MB. Overrides global option (6 MB)

/predescribesize 128

This switch is used to specify the predescribe index size in MB. Overrides global option (256 MB)

/maxindexsize 8096

This switch is used to specify the maximun index size in MB. Overrides global option (8 GB)

Thanks

Ievgenii Vasyliev - for his help in the development and implementation of the command line