Rebuild indexes

Rebuild fragmented indexes on a specified table:

CREATE OR ALTER PROCEDURE dbo.usp_Rebuild_Indexes (
  @objName NVARCHAR(255)
, @rebuildThreshold INT = 10
, @online BIT = 0
, @execute BIT = 1
, @debug BIT = 0
)
AS
 
DECLARE @sql NVARCHAR(MAX) = ''
 
SELECT
  @sql +='
 
ALTER INDEX [' + i.[name] + ']
ON [' + OBJECT_SCHEMA_NAME(i.[object_id]) + '].[' + OBJECT_NAME(i.[object_id]) + ']
' + IIF(@online = 1, 'REORGANIZE', 'REBUILD')
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) ips
  INNER JOIN sys.indexes i 
    ON i.[object_id] = ips.[object_id]
    AND i.index_id = ips.index_id
WHERE i.[object_id] = OBJECT_ID(@objName)
AND ips.avg_fragmentation_in_percent > = @rebuildThreshold
 
IF @debug = 1 PRINT @sql
IF @execute = 1 EXEC (@sql)