Skip to main content

Azure SQL - Re-build index and update stats

Useful script to rebuild table indexes and update stats


You can update the queries based on your requirement.

To update the table stats

--Query to update the table stats

SELECT N'UPDATE STATISTICS ' + t.TABLE_SCHEMA + '.' + t.TABLE_NAME + ' ;'
FROM INFORMATION_SCHEMA.tables AS t
WHERE t.TABLE_TYPE = N'BASE table';
GO


To re-build table indexes:

--To rebuild table index

DECLARE @myDatabaseName NVARCHAR(255) = N'your-database-name';
DECLARE @runningTableName NVARCHAR(255);
DECLARE @cmd NVARCHAR(1000);
DECLARE @name NVARCHAR(100)= 'your-database-name';

-- Populate the database cursor. 
DECLARE myDatabaseLevelCursor CURSOR READ_ONLY
FOR SELECT @name;


OPEN myDatabaseLevelCursor;
FETCH NEXT FROM myDatabaseLevelCursor INTO @myDatabaseName;  
WHILE @@FETCH_STATUS = 0
    BEGIN
	-- In this command we're declaring table level cursor 
        SET @cmd = 'DECLARE myTableCursor CURSOR READ_ONLY FOR SELECT 
	               ''['' + table_catalog + ''].['' + table_schema + ''].['' + table_name + '']'' as tableName
				    FROM [' + @myDatabaseName + '].INFORMATION_SCHEMA.TABLES WHERE 
				    table_type = ''BASE TABLE'' and table_schema  not in (''sys'')';

        --create table cursor  
        EXEC (@cmd);
        
		OPEN myTableCursor;
        FETCH NEXT FROM myTableCursor INTO @runningTableName;
        WHILE @@FETCH_STATUS = 0
            BEGIN
                BEGIN TRY
                    SET @cmd = 'ALTER INDEX ALL ON ' + @runningTableName + ' REBUILD';
                    PRINT @cmd; -- uncomment if you want to see commands
					--TODO: Once you verified the command (printe-one) then execute it.
                   -- EXEC (@cmd);
                END TRY
                BEGIN CATCH
                    PRINT '---';
                    PRINT @cmd;
                    PRINT ERROR_MESSAGE();
                    PRINT '---';
                END CATCH;
                FETCH NEXT FROM myTableCursor INTO @runningTableName;
            END;
        CLOSE myTableCursor;
        DEALLOCATE myTableCursor;
        FETCH NEXT FROM myDatabaseLevelCursor INTO @myDatabaseName;
    END;  
CLOSE myDatabaseLevelCursor;   
DEALLOCATE myDatabaseLevelCursor;

Comments

Popular posts from this blog

EFCore - Collate function

Search in SQL server query is generally case insensitive (by default or based on database level collation). Suppose we have an employees table with a row having first-name column value as "My-First-Name", so if we want to do the case-sensitive search we have to explicitly use the related collate: In EF 5 (currently in Release Candidate version [RC.2.20475.6]) Collate function got introduced which helps us to use our specific collation based search.  C# with EF5 code sample: var employeeCaseSensitiveSearch = _dbContext.Employees .Where(x => EF.Functions.Collate(x.FirstName, "Latin1_General_CS_AS") == "my-first-name") .FirstOrDefault(); A related database query will be something like this: T-SQL: Case sensitive search (use specific collation e.g.: Latin1_General_CS_AS) SELECT * FROM dbo.Employees AS e WHERE e.FirstName Collate Latin1_General_CS_AS = 'my-first-name' Some of the useful CSharp function which g...

How to install Zen-coding plugin

As a web-developer, irrespective of the technologies (java, c-sharp, python, php e.t.c.…), we used to write CSS code to make our web-pages looks good if not at least we’re involved in write html codes. What if there is some tool to whom you give some instruction and that tool generates a good, well formatted html tags for you. These kind of coding is possible and known as “ Zen coding ” and there are lots of plug-in available from different vendors. We’re going to  discuss the steps to install this “zen-coding” plugin for “visual studio, eclipse, sublime-text & notepad++ in next few lines. Follow the below steps to install "zen-coding" plugin based on your editor.  Steps to install zen-coding plugin for (visual studio, eclipse, sublime-text,notepad++) -- -- For Visual Studio 1. Go to "Tools" -> "Extensions and Updates" 2. It'll open the "Extensions and Updates windows"    Select online form Left hand menu items ent...

EFCore - Scaffold-DbContext how to use

EFCore versions, we don't have GUI to manage the DB-entities & dbContext like we used to have with EF6 (or EF5/4 version). With EFCore we've the Scaffold-DbContext command which helps us to create entities & DB context from our DB-objects.  Let's see how to use Scaffold-DbContext: Assume we're connecting with SQL Server so after creating a sample project you'll have to install EFCore related libraries as mentioned below.  Install entity-framework-core for SQL Server, at this time 3.1.9 is the latest stable version   Microsoft.EntityFrameworkcore   Microsoft.EntityFrameworkCore.SqlServer  To use Scaffold-DbContext, following two NuGet packages are required Microsoft.EntityFrameworkCore.Tools  Microsoft.EntityFrameworkCore.Design Let's say we've two DB tables (e.g. dbo.Employees & dbo.Users )  Now let's see how to use Scaffold-DbContext to create c-...