sql >> Databáze >  >> RDS >> Sqlserver

Úlohy údržby v malých databázích SQL

příliš vágní na to, abych přesně odpověděl, hodně záleží na druhu činnosti prováděné na DB, použitém modelu obnovy. V jednoduchém režimu obnovy, který používá pouze db soubor bez transakčního protokolu, pokud dochází k častému mazání a vkládání do tabulek, obvykle potřebujete pravidelně znovu vytvářet indexy.

Používám k nastavení denní (noční) úlohy, která vyvolá sqlcmd ke spuštění následujícího SQL:

--*********************************
--*** REPLACE THIS WITH DBNAME  ***
USE db_mytestcopy_of_live_production
--*********************************

GO


DECLARE @Queryresult NVARCHAR(MAX)

SET @Queryresult=''

--*********************************
--DEFRAGGING THE MOST 6 FRAGMENTED INDEXES EXCLUDING ONES WITH A FRAG UP TO 35 %
--TO TAILOR IT TO YOUR NEEDS CHANGE THE NUMBERS AFTER "SELECT TOP" AND AFTER "ss.avg_fragmentation_in_percent >"

--WITHIN THE SQL HERE BELOW
--*********************************

SELECT TOP 6
  @[email protected] + 'ALTER INDEX ' + QUOTENAME(i.name) + ' ON '
  + QUOTENAME('dbo') + '.'
  + QUOTENAME(OBJECT_NAME(i.OBJECT_ID)) + ' REBUILD;'
 FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ss
  INNER JOIN sys.indexes i ON i.OBJECT_ID = ss.OBJECT_ID AND i.index_id = ss.index_id
  INNER JOIN sys.objects o ON ss.object_id = o.object_id
WHERE ss.avg_fragmentation_in_percent > 35
AND ss.record_count > 0 
AND o.is_ms_shipped = 0 --Excludes any objects created as a part of SQL Server installation
AND ss.index_id > 0     --Excludes heap indexes
ORDER BY ss.avg_fragmentation_in_percent DESC

--*********************************
--Uncomment to see the generated command

--*********************************
--PRINT @QueryResult

EXEC sp_executesql @QueryResult



  1. Codeigniter se přepne na sekundární databázi, pokud je primární nefunkční

  2. Dotaz na EAV SQL Design

  3. Jak zašifruji hesla pomocí PostgreSQL?

  4. Parametr nefunguje tak dobře jako pevné kódování hodnoty