ゆるいSEのIT徒然草

SE向けナレッジ(ほぼ自分用メモ)。技術以外にも、システム関連のもろもろ雑多なノウハウを公開します。内容保証しません!!!

各テーブル・インデックスの圧縮SQL生成用SQL

select * from (

SELECT 'ALTER TABLE ' + name + ' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);' as sqltext FROM sys.objects WHERE type = 'U' and (name NOT LIKE 'sys%' and name NOT LIKE 'dt%') and create_DATE >='2014/09/01'

UNION

SELECT 'ALTER INDEX ' + name + ' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);' as sqltext FROM sysindexkeys ik,sysobjects o,sysindexes i WHERE ik.id = o.id AND ik.id = i.id AND ik.indid = i.indid AND o.xtype = 'U' and i.name IS NOT NULL and o.name is not null ) target

※PAGE⇒NONEに変えれば、非圧縮化もできる。 ※ここでの出力結果から、圧縮不要なものは除くこと。 ※洗い替えを頻繁に行うテーブルは圧縮しないほうがよい。