Saturday, December 26, 2020

Find Busiest Table in SQL Database

 Execute below to find the busiest table in database and check for opportunity to create index.


SELECT   TOP 25     SERVERPROPERTY ('servername') AS [Server_Name],             

DB_NAME([database_id]) AS [Database_Name],             

SCHEMA_NAME([schema_id]) + '.'+ OBJECT_NAME([ddios].[object_id]) AS [Table_Name],            

 FORMAT([row_lock_count], 'N0') AS [Row_Lock_Count],            

  FORMAT([page_lock_count], 'N0') AS [Page_Lock_Count],             

  FORMAT([row_lock_count] + [page_lock_count], 'N0') AS [Number_Of_Locks],             

  FORMAT([row_lock_wait_count], 'N0') AS [Row_Block_Count],            

   FORMAT([page_lock_wait_count], 'N0') AS [Page_Block_Count],            

    FORMAT([row_lock_wait_count] + [page_lock_wait_count], 'N0') AS [Number_Of_Blocks],             

--[row_lock_wait_in_ms], [page_lock_wait_in_ms],             

FORMAT([row_lock_wait_in_ms] + [page_lock_wait_in_ms], 'N0') AS [Block_Wait_Time_ms],             

([row_lock_wait_in_ms] + [page_lock_wait_in_ms])/CAST(([row_lock_count] + [page_lock_count]) AS FLOAT) AS [Block_Wait_Time_ms_Per_Lock],             

[Index_ID] 

FROM        [sys].[dm_db_index_operational_stats](DB_ID(),NULL,NULL,NULL) AS [ddios] 

INNER JOIN    [sys].[tables] AS [t]        

ON    [ddios].[object_id] = [t].[object_id]    

  WHERE    ([row_lock_wait_count] + [page_lock_wait_count]) <> 0 

  ORDER BY  ([row_lock_wait_in_ms] + [page_lock_wait_in_ms])  desc

No comments:

Post a Comment