昔書いたクエリを SQL Server 2008 に対応してみた
今日は SQL Server 2008 のメンテナンスの日。作業をしている〇きちという方が、下記のクエリが 2008 で動作しないとうるさいので、書き直してみます。
SELECT [テーブル名] = t.name, [統計名] = s.name, [統計の自動作成] = s.auto_created, [NORECOMPUTEオプション] = s.no_recompute, [フィルター定義] = s.has_filter, [フィルター定義] = s.filter_definition, [行数] = sp.rows, [フィルター化されていない行数] = sp.unfiltered_rows, [ステップ数] = sp.steps, [サンプリング行数] = sp.rows_sampled, [統計情報最終更新日] = sp.last_updated FROM sys.tables AS t INNER JOIN sys.stats AS s ON s.object_id = t.object_id CROSS APPLY sys.dm_db_stats_properties(s.object_id, s.stats_id) AS sp ORDER BY t.name OPTION (RECOMPILE);
インデックスの統計内容について参照してみる - 都内で働くSEの技術的なひとりごと
sys.dm_db_stats_properties は SQL Server 2008 R2 Service Pack 2 から搭載された DMV です。統計情報が更新された日が確認できるように STATS_DATE を使ってクエリを書き直してみましょう。
SELECT [テーブル名] = t.name, [統計名] = s.name, [統計の自動作成] = s.auto_created, [NORECOMPUTEオプション] = s.no_recompute, [フィルター定義] = s.has_filter, [フィルター定義] = s.filter_definition, [統計情報更新日] = STATS_DATE (t.object_id, i.index_id) FROM sys.tables AS t INNER JOIN sys.stats AS s ON s.object_id = t.object_id INNER JOIN sys.indexes i ON t.object_id = i.object_id ORDER BY t.name
この本の SQL Server 2016 版とか出ないかなぁ。SQL Server やり始めたときにお世話になった本。
アドバンストMS SQL SERVER 2008 構築・管理 (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ)
- 作者: マイクロソフト株式会社コンサルティングサービス統括本部データベーステクノロジチーム一同,棚橋信勝
- 出版社/メーカー: 日経BP社
- 発売日: 2009/06/04
- メディア: 単行本
- クリック: 23回
- この商品を含むブログ (1件) を見る