Linksテーブルに対するクエリを実行する際に、CPUとDTUの消費量が増加する場合があります。その場合、リンク データベースへのアクセスを必要とする操作に、遅延が生じる傾向が見られます。この記事では、LinksテーブルにSQLインデックスを作成することで、リンク データベースのクエリ実行時間を短縮する方法をご紹介します。
Linkデータベースのクエリ実行時間を短縮する方法として、下記5点の手順をお勧めします。
ALTER TABLE [Links] ALTER COLUMN TargetPath NVARCHAR(MAX) NOT NULL
CREATE NONCLUSTERED INDEX [ndxSourceItemIdSourceDatabase] ON [dbo].[Links]
(
[SourceItemID] ASC,
[SourceDatabase] ASC
)
INCLUDE ([TargetDatabase],[TargetItemId],[SourceLanguage],[SourceVersion],[SourceFieldID],[TargetLanguage],[TargetVersion],[TargetPath])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [ndxTargetItemIdTargetDatabase] ON [dbo].[Links]
(
[TargetItemId] ASC,
[TargetDatabase] ASC
)
INCLUDE ([SourceDatabase],[SourceItemID],[SourceLanguage],[SourceVersion],[SourceFieldID],[TargetLanguage],[TargetVersion],[TargetPath])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
備考: これらの手順は、多くの環境においてクエリの実行時間を短縮することができますが、本番環境の実施前に、テスト環境下で変更内容をテストすることをお勧めします。これは、インデックスの維持コスト(データ変更時のインデックス更新)が、クエリのパフォーマンス向上を上回らないようにするためです。