VARCHARからVARBINARYへの変換
パフォーマンスの傾向を監視し、最適化が必要な領域を特定できるように、実行中の高価なクエリのログとクエリプランをテーブルに保存しています。 ただし、クエリプランが多くのスペースを占有するようになります(各クエリに対してプラン全体を保存しているため)。 したがって、QueryPlanHashとQueryPlanを別のテーブルに抽出することにより、既存のデータを正規化しようとしています。 CREATE TABLE QueryPlans ( QueryPlanHash VARBINARY(25), QueryPlan XML, CONSTRAINT PK_QueryPlans PRIMARY KEY ( QueryPlanHash ) ); query_plan_hashin の定義はsys.dm_exec_query_statsバイナリフィールドであるため(また、定期的に新しいデータを挿入します)、VARBINARY新しいテーブルのデータ型に使用していました。 ただし、以下の挿入は失敗します... INSERT INTO QueryPlans ( QueryPlanHash, QueryPlan ) SELECT queryplanhash, queryplan FROM ( SELECT p.value('(./@QueryPlanHash)[1]', 'varchar(20)') queryplanhash, QueryPlan, ROW_NUMBER() OVER (PARTITION BY p.value('(./@QueryPlanHash)[1]', 'varchar(20)') ORDER BY DateRecorded) rownum FROM …