{"id":45650,"date":"2026-07-21T17:32:49","date_gmt":"2026-07-21T15:32:49","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=45650"},"modified":"2026-07-21T17:32:51","modified_gmt":"2026-07-21T15:32:51","slug":"green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/","title":{"rendered":"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This summer I start a series of blog posts on the \u2018green SQL Server DBA\u2019, as it\u2019s a topic that continues to interest me and one that hasn\u2019t been covered very much so far. I hope you\u2019ll enjoy my tips, starting with this one on unused indexes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When discussing SQL Server performance, we often hear our performance tool say, \u2018<em>An index is missing<\/em>\u2019, but never \u2018<em>There are too many indexes<\/em>\u2019.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, in many databases, certain indexes are never used by business queries and they are maintained with every INSERT, UPDATE or DELETE operation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The question is really simple:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>How much does an unused index actually cost?<\/li>\n\n\n\n<li>Why is an unused index a problem?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Every time there is a change to the data, SQL Server must also update all the relevant indexes, and that is not free.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As an example, I\u2019m going to use a widely recognised database: the famous DynamicsBC.<\/p>\n\n\n\n<h2 id=\"h-the-audit\" class=\"wp-block-heading\">The AUDIT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The first step in any study is always to carry out an inventory to gather all the data required for the analysis. I need the size of the database, size of each data file, size of the data and size of the indexes<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I will use a query using the DMV: <a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-objects\/sys-dm-db-partition-stats-transact-sql?view=sql-server-ver17\" data-type=\"link\" data-id=\"https:\/\/learn.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-objects\/sys-dm-db-partition-stats-transact-sql?view=sql-server-ver17\">sys.dm_db_partition_stats<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>USE DynamicsBC;\nGO\n\nSELECT\nDB_NAME() AS DatabaseName,\nCAST(SUM(reserved_page_count) * 8.0 \/ 1024 AS DECIMAL(18,2)) AS TotalSizeMB,\nCAST(SUM(used_page_count) * 8.0 \/ 1024 AS DECIMAL(18,2)) AS UsedSizeMB,\nCAST((SUM(reserved_page_count) - SUM(used_page_count)) * 8.0 \/ 1024 AS DECIMAL(18,2)) AS FreeSizeMB,\nCAST(SUM(\nCASE\nWHEN index_id &lt; 2 THEN in_row_data_page_count\n+ lob_used_page_count\n+ row_overflow_used_page_count\nELSE 0\nEND\n) * 8.0 \/ 1024 AS DECIMAL(18,2)) AS DataSizeMB,\nCAST(SUM(\nCASE\nWHEN index_id &gt;= 2 THEN used_page_count\nELSE 0\nEND\n) * 8.0 \/ 1024 AS DECIMAL(18,2)) AS IndexSizeMB\nFROM sys.dm_db_partition_stats;\nGO\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"818\" height=\"561\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02.png\" alt=\"\" class=\"wp-image-45651\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02.png 818w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02-300x206.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02-768x527.png 768w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If we look at the ratio between the indexes and the data, we get:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">64966.91\/92898.87 \u00d7 100 = ~70 %<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A ratio exceeding 50\u201360 % often requires an analysis of unused indexes, index overlap and compression.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>YES, we are good with this database! \ud83d\ude09<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, let see if we have unused Indexes I use a script that I created years ago for DWH audit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/******************************************************************************************\/\n--Summary\n\/******************************************************************************************\/\nUSE &#091;master];\n\nDECLARE @sqlcmd NVARCHAR(max);\nDECLARE @ExcludeFlag BIT = 0;\nDECLARE @IncludeDB VARCHAR(1000);\nDECLARE @ExcludeDB VARCHAR(1000);\n\n\nSET  @IncludeDB = 'DynamicsBC'\n\nSELECT @ExcludeFlag = 0;\n--SELECT @ExcludeDB = 'distribution,master,model,msdb,tempdb';\n \n\nDECLARE @InDBList TABLE (indb SYSNAME);\nDECLARE @ExDBList TABLE (exdb SYSNAME);\nDECLARE @dbList TABLE (dbID INT NOT NULL PRIMARY KEY, dbName SYSNAME NOT NULL);\n\n\nIF (@ExcludeFlag = 0)\nBEGIN\n\tINSERT INTO @InDBList SELECT * FROM string_split(@IncludeDB,',');\n\tINSERT INTO @dbList (dbID, dbName) \n\t\tSELECT d.database_id, d.name \n\t\tFROM sys.databases d \n\t\tWHERE d.name IN (SELECT indb FROM @InDBList);\nEND\nELSE\nBEGIN\n--\tINSERT INTO @ExDBList SELECT * FROM string_split(@ExcludeDB,',');\n\tINSERT INTO @dbList (dbID, dbName) \n\t\tSELECT d.database_id, d.name \n\t\tFROM sys.databases d \n--\t\tWHERE d.name NOT IN (SELECT exdb FROM @ExDBList);\n--\t\tWHERE d.name NOT IN ('distribution','master','model','msdb','tempdb');\n\nEND\n\n\/*********************************************************************\nCreation of the result table variable to store the information\n--*********************************************************************\/\n\nIF (SELECT OBJECT_ID('tempdb.dbo.#dbUnUsedIndex')) IS NOT NULL  \n\tDROP TABLE dbo.#dbUnUsedIndex\nCREATE TABLE #dbUnUsedIndex (\n\tdbID INT NOT NULL,\n\tdbName SYSNAME NOT NULL,\n\tobjName SYSNAME NULL,\n\tidxName SYSNAME NULL,\n\tidxID INT NULL,\n\tUserSeek BIGINT NULL,\n\tUserScans BIGINT NULL,\n\tUserLookups BIGINT NULL,\n\tUserUpdates BIGINT NULL,\n\tnbRows BIGINT NULL,\n\tdropStatement NVARCHAR(1000) NULL)\n\nDECLARE @dbID INT;\nDECLARE @dbName SYSNAME;\nDECLARE cur_dblst CURSOR \n  LOCAL STATIC READ_ONLY FORWARD_ONLY\nFOR \nSELECT dbID, dbName\nFROM @dbList;\n\nOPEN cur_dblst\nFETCH NEXT FROM cur_dblst INTO @dbID, @dbName\nWHILE @@FETCH_STATUS = 0\nBEGIN \n    --Do something with Id here\n\n\tSELECT @sqlcmd = N'\n\t\tUSE &#091;' + @dbName + ']'\n\t\t+ ' SELECT\n\t\t\t@dbID\n\t\t\t, @dbName\t\t\t\n\t\t\t, o.name AS objName\n\t\t\t, i.name AS idxName\n\t\t\t, i.index_id AS idxID\n\t\t\t, dm_ius.user_seeks AS UserSeek\n\t\t\t, dm_ius.user_scans AS UserScans\n\t\t\t, dm_ius.user_lookups AS UserLookups\n\t\t\t, dm_ius.user_updates AS UserUpdates\n\t\t\t, p.TableRows AS nbRows\n\t\t\t, ''DROP INDEX '' + QUOTENAME(i.name)\n\t\t\t+ '' ON '' + QUOTENAME(s.name) + ''.''\n\t\t\t+ QUOTENAME(OBJECT_NAME(dm_ius.OBJECT_ID)) AS ''dropStatement''\n\t\tFROM sys.dm_db_index_usage_stats dm_ius\n\t\t\tINNER JOIN sys.indexes i ON i.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = i.OBJECT_ID\n\t\t\tINNER JOIN sys.objects o ON dm_ius.OBJECT_ID = o.OBJECT_ID\n\t\t\tINNER JOIN sys.schemas s ON o.schema_id = s.schema_id\n\t\t\tINNER JOIN (SELECT SUM(p.rows) TableRows, p.index_id, p.OBJECT_ID\n\t\t\tFROM sys.partitions p GROUP BY p.index_id, p.OBJECT_ID) p\n\t\t\tON p.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = p.OBJECT_ID\n\t\tWHERE OBJECTPROPERTY(dm_ius.OBJECT_ID,''IsUserTable'') = 1\n\t\t\tAND dm_ius.database_id = DB_ID()\n\t\t\tAND i.type_desc = ''nonclustered''\n\t\t\tAND i.is_primary_key = 0\n\t\t\tAND i.is_unique_constraint = 0\n\t\tORDER BY (dm_ius.user_seeks + dm_ius.user_scans + dm_ius.user_lookups) ASC; '\n\n\tINSERT INTO #dbUnUsedIndex (\n\t\t\t\t\tdbID,\n\t\t\t\t\tdbName,\n\t\t\t\t\tobjName,\n\t\t\t\t\tidxName,\n\t\t\t\t\tidxID,\n\t\t\t\t\tUserSeek,\n\t\t\t\t\tUserScans,\n\t\t\t\t\tUserLookups,\n\t\t\t\t\tUserUpdates,\n\t\t\t\t\tnbRows,\n\t\t\t\t\tdropStatement)\n\tEXEC sp_executesql  @sqlCmd, N'@dbID INT, @dbName SYSNAME', @dbID, @dbName\n\n    FETCH NEXT FROM cur_dblst INTO @dbID, @dbName\nEND\nCLOSE cur_dblst\nDEALLOCATE cur_dblst\n\nSELECT Count(*) FROM #dbUnUsedIndex\n\nSELECT * FROM #dbUnUsedIndex\nORDER BY dbName, objName\n\n\n IndexInfo;\nGO\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"617\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-04-1024x617.png\" alt=\"\" class=\"wp-image-45655\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-04-1024x617.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-04-300x181.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-04-768x463.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-04.png 1153w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For the total number of Indexes, we use this simple query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT COUNT(*) AS TotalIndexes\nFROM dynamicsBC.sys.indexes i\nINNER JOIN sys.tables t\nON i.object_id = t.object_id\nWHERE i.index_id &gt; 0;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"351\" height=\"249\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-05.png\" alt=\"\" class=\"wp-image-45656\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-05.png 351w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-05-300x213.png 300w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We have 998 unused Index for a total of 19494 Index. This is 5% of the Indexes.<br>In this case, we will not win a lot. 5% is good but we can have a look because we never known&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-the-impact\" class=\"wp-block-heading\">The IMPACT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The first impact is on DML INSERT and UPDATE operations.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With every insertion, the data is written to the table and several index structures must also be updated, even when one of these indexes is never used by a query.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So we have the following sequence:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT &#8211;&gt; write to the table &#8211;&gt; update index 1&nbsp; &#8211;&gt; update index 2&nbsp; &#8211;&gt; update index 3&nbsp; &#8211;&gt; update index 4 &#8230;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is even more costly for this command because, for each operation, the sequence is as follows:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UPDATE<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UPDATE &#8211;&gt; Delete the old index entry + Create the new entry for each index<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The result of all of this is more I\/O, more CPU usage and also more entries in the Transaction Log<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On heavily used transactional tables, a few unused indexes can account for several per cent of additional load.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The second impact is the storage and the backup<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the unused index represents ~100B of the database.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If 100 GB of indexes are never used, that\u2019s 100 GB backed up unnecessarily, 100 GB restored unnecessarily and, above all, 100 GB stored unnecessarily and just for one environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you have Dev, Test, PreProd &amp; Prod and all in HA&#8230; I let you do the calculation but it\u2019s near 1 TB!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The third impact is on the maintenance plan<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following operations must also handle unused indexes:<br>&#8211; Rebuild Index<br>&#8211; Reorganise Index<br>&#8211; CheckDB<br>&#8211; Backups<br>&#8211; Restores<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each additional index extends the maintenance windows&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-the-advise\" class=\"wp-block-heading\">The ADVISE<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You really need to be careful before deleting anything, as an unused index is not necessarily useless.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You should check several factors before you delete unused indexes:<br> &#8211; Full business cycle<br> &#8211; End\/Begin of month<br> &#8211; Annual processing<br> &#8211; Reporting<br> &#8211; ETL<br> &#8211; SQL Agent jobs<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I generally recommend observing the index between 1 and 3 months before deleting it and without restart. A restart will reset the DMV used for the stats&#8230; And always keep the script for recreating the index to hand!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-the-green-sql-server-dba-score\" class=\"wp-block-heading\">The Green SQL Server DBA Score<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Just for fun, we\u2019re going to set up a \u2018SQL Server DBA Score\u2019 to use for my tips on the subject:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Unused index rates (unused index\/total index)<\/td><td>Score<\/td><\/tr><tr><td>&lt; 5%<\/td><td>10\/10<\/td><\/tr><tr><td>5 to 10%<\/td><td>8\/10<\/td><\/tr><tr><td>10 to 20 %<\/td><td>5\/10<\/td><\/tr><tr><td>&gt; 20 %<\/td><td>2\/10<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-conclusion\" class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An unused index is a bit like car that never gets driven:<br>it takes up space;it costs money;it requires maintenance;but it produces no value.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Green SQL Server DBA doesn\u2019t just seek to add indexes.<br>They aim to retain only those that deliver measurable business value.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">See you soon for the next one!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This summer I start a series of blog posts on the \u2018green SQL Server DBA\u2019, as it\u2019s a topic that continues to interest me and one that hasn\u2019t been covered very much so far. I hope you\u2019ll enjoy my tips, starting with this one on unused indexes. When discussing SQL Server performance, we often hear [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[229,198,2451,99,48],"tags":[49,51],"type_dbi":[2874],"class_list":["post-45650","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","category-ms-teams","category-sql-server","category-technology-survey","tag-microsoft","tag-sql-server","type-sql-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.0 (Yoast SEO v28.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database? - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database?\" \/>\n<meta property=\"og:description\" content=\"This summer I start a series of blog posts on the \u2018green SQL Server DBA\u2019, as it\u2019s a topic that continues to interest me and one that hasn\u2019t been covered very much so far. I hope you\u2019ll enjoy my tips, starting with this one on unused indexes. When discussing SQL Server performance, we often hear [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-21T15:32:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-21T15:32:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02.png\" \/>\n\t<meta property=\"og:image:width\" content=\"818\" \/>\n\t<meta property=\"og:image:height\" content=\"561\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"St\u00e9phane Haby\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"St\u00e9phane Haby\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/\"},\"author\":{\"name\":\"St\u00e9phane Haby\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0bfb7484ae81c8980fc2b11334f803b\"},\"headline\":\"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database?\",\"datePublished\":\"2026-07-21T15:32:49+00:00\",\"dateModified\":\"2026-07-21T15:32:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/\"},\"wordCount\":755,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/07\\\/unused-index-02.png\",\"keywords\":[\"Microsoft\",\"SQL Server\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"MS Teams\",\"SQL Server\",\"Technology Survey\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/\",\"name\":\"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database? - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/07\\\/unused-index-02.png\",\"datePublished\":\"2026-07-21T15:32:49+00:00\",\"dateModified\":\"2026-07-21T15:32:51+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0bfb7484ae81c8980fc2b11334f803b\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/07\\\/unused-index-02.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/07\\\/unused-index-02.png\",\"width\":818,\"height\":561},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0bfb7484ae81c8980fc2b11334f803b\",\"name\":\"St\u00e9phane Haby\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1123227ca39a5dca608c0f72d23cd1904fee29979749bbb3a485b9438436c553?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1123227ca39a5dca608c0f72d23cd1904fee29979749bbb3a485b9438436c553?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1123227ca39a5dca608c0f72d23cd1904fee29979749bbb3a485b9438436c553?s=96&d=mm&r=g\",\"caption\":\"St\u00e9phane Haby\"},\"description\":\"St\u00e9phane Haby has more than ten years of experience in Microsoft solutions. He is specialized in SQL Server technologies such as installation, migration, best practices, and performance analysis etc. He is also an expert in Microsoft Business Intelligence solutions such as SharePoint, SQL Server and Office. Futhermore, he has many years of .NET development experience in the banking sector and other industries. In France, he was one of the first people to have worked with Microsoft Team System. He has written several technical articles on this subject. St\u00e9phane Haby is Microsoft Most Valuable Professional (MVP) as well as Microsoft Certified Solutions Associate (MCSA) and\u00a0Microsoft Certified Solutions Expert (MCSE) for SQL Server 2012. He is also Microsoft Certified Technology Specialist (MCTS) and Microsoft Certified IT Professional (MCITP) for SQL Server 2008 as well as ITIL Foundation V3 certified. He holds a Engineer diploma in industrial computing and automation from France. His branch-related experience covers Chemicals &amp; Pharmaceuticals, Banking \\\/ Financial Services, and many other industries.\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/stephane-haby\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database? - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/","og_locale":"en_US","og_type":"article","og_title":"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database?","og_description":"This summer I start a series of blog posts on the \u2018green SQL Server DBA\u2019, as it\u2019s a topic that continues to interest me and one that hasn\u2019t been covered very much so far. I hope you\u2019ll enjoy my tips, starting with this one on unused indexes. When discussing SQL Server performance, we often hear [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/","og_site_name":"dbi Blog","article_published_time":"2026-07-21T15:32:49+00:00","article_modified_time":"2026-07-21T15:32:51+00:00","og_image":[{"width":818,"height":561,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02.png","type":"image\/png"}],"author":"St\u00e9phane Haby","twitter_card":"summary_large_image","twitter_misc":{"Written by":"St\u00e9phane Haby","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/"},"author":{"name":"St\u00e9phane Haby","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/d0bfb7484ae81c8980fc2b11334f803b"},"headline":"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database?","datePublished":"2026-07-21T15:32:49+00:00","dateModified":"2026-07-21T15:32:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/"},"wordCount":755,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02.png","keywords":["Microsoft","SQL Server"],"articleSection":["Database Administration &amp; Monitoring","Database management","MS Teams","SQL Server","Technology Survey"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/","url":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/","name":"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database? - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02.png","datePublished":"2026-07-21T15:32:49+00:00","dateModified":"2026-07-21T15:32:51+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/d0bfb7484ae81c8980fc2b11334f803b"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/unused-index-02.png","width":818,"height":561},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/green-sql-server-dba-tips-1-are-unnecessary-indexes-cluttering-up-your-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Green SQL Server DBA Tips \u00a0#1 \u2013 Are unnecessary indexes cluttering up your database?"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/d0bfb7484ae81c8980fc2b11334f803b","name":"St\u00e9phane Haby","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1123227ca39a5dca608c0f72d23cd1904fee29979749bbb3a485b9438436c553?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1123227ca39a5dca608c0f72d23cd1904fee29979749bbb3a485b9438436c553?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1123227ca39a5dca608c0f72d23cd1904fee29979749bbb3a485b9438436c553?s=96&d=mm&r=g","caption":"St\u00e9phane Haby"},"description":"St\u00e9phane Haby has more than ten years of experience in Microsoft solutions. He is specialized in SQL Server technologies such as installation, migration, best practices, and performance analysis etc. He is also an expert in Microsoft Business Intelligence solutions such as SharePoint, SQL Server and Office. Futhermore, he has many years of .NET development experience in the banking sector and other industries. In France, he was one of the first people to have worked with Microsoft Team System. He has written several technical articles on this subject. St\u00e9phane Haby is Microsoft Most Valuable Professional (MVP) as well as Microsoft Certified Solutions Associate (MCSA) and\u00a0Microsoft Certified Solutions Expert (MCSE) for SQL Server 2012. He is also Microsoft Certified Technology Specialist (MCTS) and Microsoft Certified IT Professional (MCITP) for SQL Server 2008 as well as ITIL Foundation V3 certified. He holds a Engineer diploma in industrial computing and automation from France. His branch-related experience covers Chemicals &amp; Pharmaceuticals, Banking \/ Financial Services, and many other industries.","url":"https:\/\/www.dbi-services.com\/blog\/author\/stephane-haby\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/45650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=45650"}],"version-history":[{"count":4,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/45650\/revisions"}],"predecessor-version":[{"id":45660,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/45650\/revisions\/45660"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=45650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=45650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=45650"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=45650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}