In the documentation How to Create Maintenance Plans in SQL to Keep Your Database Running Smoothly (ivanti.com)

You will find the queries for fragmentation and index rebuilds.

SQL Fragmentation Query

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<pre class="wp-block-syntaxhighlighter-code">--Change the <YOURDATABASE> variable to the name of your EPM database that you are running the query against.
 
USE <YOURDATABASE>
 
SELECT Object_name(object_id, database_id) AS table_name,
      index_id,
      partition_number,
      avg_fragmentation_in_percent,
      fragment_count,
      page_count
FROM  sys.Dm_db_index_physical_stats(NULL, NULL, NULL, NULL, NULL)
WHERE  index_type_desc = N'CLUSTERED INDEX'
      AND avg_fragmentation_in_percent > 5
      AND page_count >= 20
ORDER  BY avg_fragmentation_in_percent desc</pre>

Rebuild Fragmented Indexes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-- Rebuild fragmented indexes
 
DECLARE @TableName VARCHAR(255);
DECLARE @sql NVARCHAR(500);
DECLARE @fillfactor INT;
SET @fillfactor = 70;
DECLARE [TableCursor] CURSOR FOR
SELECT  OBJECT_SCHEMA_NAME([object_id]) + '.' + [name] AS [TableName]
FROM    [sys].[tables];
OPEN [TableCursor];
FETCH NEXT FROM [TableCursor]
INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @sql
        = N'ALTER INDEX ALL ON ' + @TableName + N' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3), @fillfactor)
          + N')';
    EXEC (@sql);
    FETCH NEXT FROM [TableCursor]
    INTO @TableName;
END;
CLOSE [TableCursor];
DEALLOCATE [TableCursor];
GO