Please start any new threads on our new 
    site at https://forums.sqlteam.com.  We've got lots of great SQL Server
    experts to answer whatever question you can come up with. 
    
        
            
                
                    
                        
                            
                                | Author | 
                                
                                 Topic  | 
                             
                            
                                    | 
                                         rmg1 
                                        Constraint Violating Yak Guru 
                                         
                                        
                                        256 Posts  | 
                                        
                                        
                                            
                                            
                                             Posted - 2013-03-08 : 05:04:27
                                            
  | 
                                             
                                            
                                            Hi allI've got some code which checks a given database for all indexes and then lists those with >30% fragmentation.The code is here:-use SymposiumDWgoSELECT	object_name(IPS.object_id) AS [TableName],	ips.object_id as [TableID],	SI.name AS [IndexName], 	IPS.Index_type_desc,	ips.index_depth,	IPS.avg_fragmentation_in_percent, 	IPS.avg_fragment_size_in_pages, 	IPS.avg_page_space_used_in_percent, 	IPS.record_count, 	IPS.ghost_record_count,	IPS.fragment_count, 	IPS.avg_fragment_size_in_pagesFROM	sys.dm_db_index_physical_stats(db_id(N'[SymposiumDW]'), null, null, NULL , 'DETAILED') IPS	JOIN sys.tables ST WITH (nolock)		ON IPS.object_id = ST.object_id	JOIN sys.indexes SI WITH (nolock)		ON IPS.object_id = SI.object_id		AND IPS.index_id = SI.index_idwhere	ST.is_ms_shipped = 0	and IPS.avg_fragmentation_in_percent>=30 -- allow limited fragmentation	and IPS.index_type_desc<>'heap'	and IPS.index_level=0	and object_name(IPS.object_id)<>'sysdiagrams'ORDER BY	IPS.avg_fragmentation_in_percent desc	,object_name(IPS.object_id) The problem is, it takes about 2 hours to run for each database and I'm trying to find a way to speed it up.So, 2 questions:-1) Can I speed it up and f so how?2) Is there a way of checking all indexes rather than doing this one database at a time?Any help greatly appreciated. | 
                                             
                                         
                                     | 
                             
       
                            
                       
                          
                            
                                    | 
                                     ahmeds08 
                                    Aged Yak Warrior 
                                     
                                    
                                    737 Posts  | 
                                    
                                      
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     rmg1 
                                    Constraint Violating Yak Guru 
                                     
                                    
                                    256 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2013-03-08 : 06:18:55
                                          
  | 
                                         
                                        
                                          | That's a very comprehensive list of things it does.Does it overwrite the current data in each of the created tables (I can't tell through the code) to just give you the final output of each run?  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     ahmeds08 
                                    Aged Yak Warrior 
                                     
                                    
                                    737 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2013-03-08 : 06:26:09
                                          
  | 
                                         
                                        
                                          | It doesnt change anything..it reads data from system tables and gives the output.  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     rmg1 
                                    Constraint Violating Yak Guru 
                                     
                                    
                                    256 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2013-03-08 : 06:34:10
                                          
  | 
                                         
                                        
                                          | Ah, so it just gives recommendations on which indexes (in this case) should be reorganised/rebuilt?  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     ahmeds08 
                                    Aged Yak Warrior 
                                     
                                    
                                    737 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2013-03-08 : 06:35:55
                                          
  | 
                                         
                                        
                                          | as already mentioned based on the fragmentation levels it reorganizes/rebuilts the indexes....this will no way harm your data...  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     ahmeds08 
                                    Aged Yak Warrior 
                                     
                                    
                                    737 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2013-03-08 : 06:38:39
                                          
  | 
                                         
                                        
                                          try this:If exists (select * from tempdb.sys.all_objects where name like '#bbc%' ) drop table #bbc create table #bbc (DatabaseName varchar(100),ObjectName varchar(100),Index_id int, indexName varchar(100),avg_fragmentation_percent float,IndexType varchar(100),Action_Required varchar(100) default 'NA') go insert into #bbc (DatabaseName,ObjectName,Index_id, indexName,avg_fragmentation_percent,IndexType)  exec master.sys.sp_MSforeachdb ' USE    SELECT db_name() as DatabaseName, OBJECT_NAME (a.object_id) as ObjectName,   a.index_id, b.name as IndexName,   avg_fragmentation_in_percent, index_type_desc  -- , record_count, avg_page_space_used_in_percent --(null in limited)  FROM sys.dm_db_index_physical_stats (db_id(), NULL, NULL, NULL, NULL) AS a  JOIN sys.indexes AS b   ON a.object_id = b.object_id AND a.index_id = b.index_id  WHERE b.index_id <> 0 and avg_fragmentation_in_percent <>0' go   update #bbc set Action_Required ='Rebuild' where avg_fragmentation_percent >30  go  update #bbc set Action_Required ='Rorganize' where avg_fragmentation_percent <30 and avg_fragmentation_percent >5 go select * from #bbc where DatabaseName not in('master','msdb','model','tempdb')order by DatabaseName  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                            
                                | 
                                    
                                      
                                     
                                    
                                 | 
                             
                         
                     | 
                 
             
         |   
     
     
            
              
	     |  
		
			
     
          
		 |