@@ -1447,9 +1447,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
14471447 schema_id = s.schema_id,
14481448 schema_name = s.name,
14491449 object_id = i.object_id,
1450- table_name = ISNULL(t .name, v.name) ,
1450+ table_name = o .name,
14511451 index_id = i.index_id,
1452- index_name = ISNULL(i.name, ISNULL(t .name, v.name) + N'' .Heap'' ),
1452+ index_name = ISNULL(i.name, o .name + N'' .Heap'' ),
14531453 can_compress =
14541454 CASE
14551455 WHEN p.index_id > 0
@@ -1458,20 +1458,18 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
14581458 ELSE 0
14591459 END
14601460 FROM ' + QUOTENAME (@current_database_name) + N' .sys.indexes AS i
1461- LEFT JOIN ' + QUOTENAME (@current_database_name) + N' .sys.tables AS t
1462- ON i.object_id = t.object_id
1463- LEFT JOIN ' + QUOTENAME (@current_database_name) + N' .sys.views AS v
1464- ON i.object_id = v.object_id
1461+ JOIN ' + QUOTENAME (@current_database_name) + N' .sys.objects AS o
1462+ ON i.object_id = o.object_id
14651463 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.schemas AS s
1466- ON ISNULL(t .schema_id, v.schema_id) = s.schema_id
1464+ ON o .schema_id = s.schema_id
14671465 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.partitions AS p
14681466 ON i.object_id = p.object_id
14691467 AND i.index_id = p.index_id
14701468 /* LEFT JOIN to dm_db_index_usage_stats removed 2026-01-15 - was dead code with no columns selected */
1471- WHERE (t.object_id IS NULL OR t. is_ms_shipped = 0)
1472- AND (t.object_id IS NULL OR t. type <> N'' TF '' )
1473- AND i.is_disabled = 0
1474- AND i.is_hypothetical = 0' ;
1469+ WHERE o. is_ms_shipped = 0
1470+ AND o. type IN ( N'' U' ' , N' ' V '' )
1471+ AND i.is_disabled = 0
1472+ AND i.is_hypothetical = 0' ;
14751473
14761474 IF @supports_temporal_tables = 1
14771475 BEGIN
@@ -1971,9 +1969,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19711969 schema_id = s.schema_id,
19721970 schema_name = s.name,
19731971 os.object_id,
1974- table_name = ISNULL(t .name, v.name) ,
1972+ table_name = o .name,
19751973 os.index_id,
1976- index_name = ISNULL(i.name, ISNULL(t .name, v.name) + N'' .Heap'' ),
1974+ index_name = ISNULL(i.name, o .name + N'' .Heap'' ),
19771975 range_scan_count = SUM(os.range_scan_count),
19781976 singleton_lookup_count = SUM(os.singleton_lookup_count),
19791977 forwarded_fetch_count = SUM(os.forwarded_fetch_count),
@@ -2011,12 +2009,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20112009 NULL,
20122010 NULL
20132011 ) AS os
2014- LEFT JOIN ' + QUOTENAME (@current_database_name) + N' .sys.tables AS t
2015- ON os.object_id = t.object_id
2016- LEFT JOIN ' + QUOTENAME (@current_database_name) + N' .sys.views AS v
2017- ON os.object_id = v.object_id
2012+ JOIN ' + QUOTENAME (@current_database_name) + N' .sys.objects AS o
2013+ ON os.object_id = o.object_id
20182014 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.schemas AS s
2019- ON ISNULL(t .schema_id, v.schema_id) = s.schema_id
2015+ ON o .schema_id = s.schema_id
20202016 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.indexes AS i
20212017 ON os.object_id = i.object_id
20222018 AND os.index_id = i.index_id
@@ -2034,7 +2030,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20342030 s.schema_id,
20352031 s.name,
20362032 os.object_id,
2037- ISNULL(t .name, v.name) ,
2033+ o .name,
20382034 os.index_id,
20392035 i.name
20402036 OPTION(RECOMPILE);
@@ -2188,24 +2184,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21882184 i.index_id,
21892185 s.schema_id,
21902186 schema_name = s.name,
2191- table_name = ISNULL(t .name, v.name) ,
2192- index_name = ISNULL(i.name, ISNULL(t .name, v.name) + N'' .Heap'' ),
2187+ table_name = o .name,
2188+ index_name = ISNULL(i.name, o .name + N'' .Heap'' ),
21932189 column_name = c.name,
21942190 column_id = c.column_id,
21952191 i.is_primary_key,
21962192 i.is_unique,
21972193 i.is_unique_constraint,
21982194 is_indexed_view =
21992195 CASE
2200- WHEN EXISTS
2201- (
2202- SELECT
2203- 1/0
2204- FROM ' + QUOTENAME (@current_database_name) + N' .sys.objects AS so
2205- WHERE i.object_id = so.object_id
2206- AND so.is_ms_shipped = 0
2207- AND so.type = '' V''
2208- )
2196+ WHEN o.type = '' V''
22092197 THEN 1
22102198 ELSE 0
22112199 END,
@@ -2282,12 +2270,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22822270 THEN 0
22832271 END
22842272 FROM ' + QUOTENAME (@current_database_name) + N' .sys.indexes AS i
2285- LEFT JOIN ' + QUOTENAME (@current_database_name) + N' .sys.tables AS t
2286- ON i.object_id = t.object_id
2287- LEFT JOIN ' + QUOTENAME (@current_database_name) + N' .sys.views AS v
2288- ON i.object_id = v.object_id
2273+ JOIN ' + QUOTENAME (@current_database_name) + N' .sys.objects AS o
2274+ ON i.object_id = o.object_id
22892275 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.schemas AS s
2290- ON ISNULL(t .schema_id, v.schema_id) = s.schema_id
2276+ ON o .schema_id = s.schema_id
22912277 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.index_columns AS ic
22922278 ON i.object_id = ic.object_id
22932279 AND i.index_id = ic.index_id
@@ -2301,7 +2287,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23012287 LEFT JOIN #usage_stats AS us
23022288 ON i.object_id = us.object_id
23032289 AND i.index_id = us.index_id
2304- WHERE (t.object_id IS NULL OR t.is_ms_shipped = 0)
2290+ WHERE o.is_ms_shipped = 0
2291+ AND o.type IN (N'' U'' , N'' V'' )
23052292 AND i.type IN (1, 2)
23062293 AND i.is_disabled = 0
23072294 AND i.is_hypothetical = 0
@@ -2466,8 +2453,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24662453 ps.index_id,
24672454 s.schema_id,
24682455 schema_name = s.name,
2469- table_name = ISNULL(t .name, v.name) ,
2470- index_name = ISNULL(i.name, ISNULL(t .name, v.name) + N'' .Heap'' ),
2456+ table_name = o .name,
2457+ index_name = ISNULL(i.name, o .name + N'' .Heap'' ),
24712458 ps.partition_id,
24722459 p.partition_number,
24732460 total_rows = ps.row_count,
@@ -2477,20 +2464,18 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24772464 p.data_compression_desc,
24782465 i.data_space_id
24792466 FROM ' + QUOTENAME (@current_database_name) + N' .sys.indexes AS i
2480- LEFT JOIN ' + QUOTENAME (@current_database_name) + N' .sys.tables AS t
2481- ON i.object_id = t.object_id
2482- LEFT JOIN ' + QUOTENAME (@current_database_name) + N' .sys.views AS v
2483- ON i.object_id = v.object_id
2467+ JOIN ' + QUOTENAME (@current_database_name) + N' .sys.objects AS o
2468+ ON i.object_id = o.object_id
24842469 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.schemas AS s
2485- ON ISNULL(t .schema_id, v.schema_id) = s.schema_id
2470+ ON o .schema_id = s.schema_id
24862471 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.partitions AS p
24872472 ON i.object_id = p.object_id
24882473 AND i.index_id = p.index_id
24892474 JOIN ' + QUOTENAME (@current_database_name) + N' .sys.allocation_units AS a
24902475 ON p.partition_id = a.container_id
24912476 LEFT HASH JOIN ' + QUOTENAME (@current_database_name) + N' .sys.dm_db_partition_stats AS ps
24922477 ON p.partition_id = ps.partition_id
2493- WHERE (t.object_id IS NULL OR t. type <> N'' TF '' )
2478+ WHERE o. type IN ( N'' U' ' , N' ' V '' )
24942479 AND i.type IN (1, 2)
24952480 AND EXISTS
24962481 (
@@ -2519,7 +2504,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25192504 ps.index_id,
25202505 s.schema_id,
25212506 s.name,
2522- ISNULL(t .name, v.name) ,
2507+ o .name,
25232508 i.name,
25242509 ps.partition_id,
25252510 p.partition_number,
@@ -3233,7 +3218,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32333218 AND NOT (ia1 .is_unique = 1 AND ia2 .is_unique = 0 )
32343219 WHERE ia1 .consolidation_rule IS NULL /* Not already processed */
32353220 AND ia2 .consolidation_rule IS NULL /* Not already processed */
3236- /* Exclude unique constraints - we'll handle those separately in Rule 7 */
3221+ /* Don't disable unique constraints — but allow them as the wider (target) index */
32373222 AND NOT EXISTS
32383223 (
32393224 SELECT
@@ -3242,14 +3227,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32423227 WHERE id1_uc .index_hash = ia1 .index_hash
32433228 AND id1_uc .is_unique_constraint = 1
32443229 )
3245- AND NOT EXISTS
3246- (
3247- SELECT
3248- 1 / 0
3249- FROM #index_details AS id2_uc
3250- WHERE id2_uc .index_hash = ia2 .index_hash
3251- AND id2_uc .is_unique_constraint = 1
3252- )
32533230 AND EXISTS
32543231 (
32553232 SELECT
0 commit comments