[オリジナル】SQL2005再ビルドインデックスストアドプロシージャ sp_rebuild_index
2022-01-23 19:08:28
アクセス数の多いサイトを運営しており、インタラクティブなサイトであるため、3~4ヶ月後にインデックスが大量にフラグメントを生成することがしばしばあり、ページの大部分が静的に生成されていないため、サイトのオープン速度が低下する原因となっています。
以前は、インデックスを右クリックして手動で再 生成していましたが、インデックスが多すぎて、操作に時間と手間がかかっていました。インデックスはオンラインでストアドプロシージャを見つけ、実行は以下のように適切なデータベースを選択してexec sp_rebuild_indexを実行すればよいように整理した。
USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE proc [dbo]. [sp_rebuild_index]
(
@Rebuild_Fragmentation_Percent smallint = 5 -- when logical fragmentation percentage > 5% rebuild index
)
as
begin
/* Call method.
1. for the current instance of all databases: exec sys.sp_MSforeachdb 'use ? ;exec sp_rebuild_index'
2. For the current database: exec sp_rebuild_index
*/
--no re-organization of indexes and re-build indexes for the system database
if (db_name() in ('master','model','msdb','tempdb')) return;
-- If the percentage of logical fragments (unordered pages in the index) <= 5%, do not reorganize the index and regenerate it
if not exists(select 1 from sys.dm_db_index_physical_stats(db_id(),null,null,null,null,null) a where a.index_id>0 and a.avg_fragmentation_in_ percent > @Rebuild_Fragmentation_Percent) return
print replicate('-',60)+char(13)+char(10)+replicate(' ',14)+N'perform index optimization on database ' +quotename(db_name())+N' +replicate(' ',20)+char(13)+char(10 )
declare @sql nvarchar(2000),@str nvarchar(2000)
declare cur_x cursor for
select 'alter index '+quotename(a.name)+' on '+quotename(object_schema_name(a.object_id))+'.' +quotename(object_name(a.object_id))+' rebuild;' as [sql]
,N'regenerate index:' +quotename(object_schema_name(a.object_id))+'.' +quotename(object_name(a.object_id))+'.' +quotename(a.name) as [str]
from sys.indexes a
inner join sys.dm_db_index_physical_stats(db_id(),null,null,null,null,null) b on b.object_id=a.object_id
and b.index_id=a.index_id
where a.index_id>0
and b.avg_fragmentation_in_percent > @Rebuild_Fragmentation_Percent
order by object_name(a.object_id),a.index_id
open cur_x
fetch next from cur_x into @sql,@str
while (@@fetch_status = 0)
begin
print @sql
exec(@sql)
print @str
fetch next from cur_x into @sql,@str
end
close cur_x
deallocate cur_x
end
実行中に次のようなエラーが発生することがあります。
メッセージ 195, レベル 15, ステータス 10, プロシージャ sp_rebuild_index, 行 24
'object_schema_name' は認識可能な組み込み関数名ではありません。
がないためですので、ご安心ください。 SQL Server SP4 パッチ パッチをインストールするだけです。
関連
-
SQL Server 2005のすべてのテーブルで、特定のカラムを検索する方法
-
SQL 2005が設定できない問題を解決する
-
WIN7でSQL Server 2005 Express Edition(Lite)のインストールと設定
-
SQLServer 2005でサーバー名がない場合の2つの解決策
-
SQL server 2005 をインストールすると、32 ビット ASP.NET は既に登録されているので、64 ビットのソリューションを登録する必要があるとの警告が表示される。
-
SQL Server 2005 復旧データベース詳細グラフィックチュートリアル
-
SQL Server 2005 Management Studio Express Enterprise Managerで英語を簡体字中国語に変換する方法
-
AccessからSQL Server 2005へのインポートの方法概要
-
Sql Server 2005 のポート 1433 で LAN アクセスを開放し、リモート接続を行う。
-
SQLServerは、ユーザーのデフォルトデータベースを開くことができません ログイン失敗エラー4064の解決策
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Microsoft Sql server2005 のインストール手順のグラフィック詳細とよくある問題の解決法
-
Management StudioでWebブラウザを使用したSQL Server
-
SQL Server 2005における外部結合の使用法
-
SQLserverにおけるdeclare変数の使用法
-
Sqlサーバーのバックアップとリストア後の制限されたユーザーの問題
-
SQL Server 2005 Compact Editionのデータベースを削除する詳細情報
-
sql server 2005 データベースのバックアップ・リストア グラフィックチュートリアル
-
SQL Server Connect to Server Error 233 の解決法
-
SQL Server モバイルシステムデータベース
-
SQL Server 2005のインストールと設定方法のグラフィックチュートリアルは、Win7のすべてのバージョンと完全に互換性があります。