都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

昨日書いた依頼事項のスクリプトを少しだけ修正してみた

 少し書き直しました。ファイルグループとかの情報もほしくなったので。

SELECT
    [ファイルグループ] = ds.name,
    [アロケーションユニット種別] = au.type_desc,
    [使用済みのページ数] = au.data_pages,
    [実際に使用されるページ総数] = au.used_pages,
    [予約されたページ総数] = au.total_pages,
    [スキーマ名] = s.name,
    [テーブル名] = t.name,
    [インデックス名] = i.name,
    [インデックスタイプ] = i.type_desc,
    [インデックス列] = STUFF(indnm, 1, 1, ''),
    [付加列] = STUFF(incnm, 1, 1, ''),
    [圧縮種別] = p.data_compression_desc,
    [パーティション番号] = p.partition_number,
    [行数] = p.rows,
    [シーク回数] = ius.user_seeks,
    [最終シーク日] = ius.last_user_seek,
    [スキャン回数] = ius.user_scans,
    [最終スキャン日] = ius.last_user_scan,
    [ルックアップ回数] = ius.user_lookups,
    [最終ルックアップ日] = ius.last_user_lookup,
    [更新回数] = ius.user_updates,
    [最終更新日] = ius.last_user_update,
    [システムシーク回数] = ius.system_seeks,
    [システム最終シーク日] = ius.last_system_seek,
    [システムスキャン回数] = ius.system_scans,
    [システム最終スキャン日] = ius.last_system_scan,
    [システムルックアップ回数] = ius.system_lookups,
    [システム最終ルックアップ日] = ius.last_system_lookup,
    [システム更新回数] = ius.system_updates,
    [システム最終更新日] = ius.last_system_update
FROM
    sys.data_spaces ds
    INNER JOIN
        sys.allocation_units au ON
        ds.data_space_id = au.data_space_id
    INNER JOIN
        sys.partitions p ON
        (
            au.container_id = p.hobt_id AND
            au.type IN(1,3)
        ) OR
        (
            au.container_id = p.partition_id AND
            au.type = 2
        )
    INNER JOIN
        sys.tables t ON
        p.object_id = t.object_id
    INNER JOIN
        sys.schemas s ON
        t.schema_id = s.schema_id
    INNER JOIN
        sys.indexes i ON
        p.object_id = i.object_id AND
        p.index_id  = i.index_id
    LEFT OUTER JOIN 
	sys.dm_db_index_usage_stats ius ON
        i.object_id = ius.object_id AND
        i.index_id  = ius.index_id
CROSS APPLY
(
    SELECT
        ',' + c.name
    FROM
        sys.index_columns ic
        INNER JOIN 
            sys.columns c ON
            ic.object_id = c.object_id AND
            ic.column_id = c.column_id
    WHERE
        i.object_id = ic.object_id AND
        i.index_id = ic.index_id AND
        ic.is_included_column = 0
    ORDER BY
        ic.key_ordinal
    FOR XML PATH('')
) AS cra1(indnm) 
CROSS APPLY
(
    SELECT
        ',' + c.name
    FROM
        sys.index_columns ic
        INNER JOIN 
            sys.columns c ON
            ic.object_id = c.object_id AND
            ic.column_id = c.column_id
    WHERE
        i.object_id = ic.object_id AND
        i.index_id = ic.index_id AND
        ic.is_included_column = 1
    ORDER BY
        ic.key_ordinal
    FOR XML PATH('')
) AS cra2(incnm)
ORDER BY
    [スキャン回数] DESC,
    [最終スキャン日] DESC

f:id:koogucc11:20151107102346p:plain

SQL の書き方が毎回変わってるなー。気分によってかわってしまう。

あ、UNIFLAMEからテーブル出てる...

ユニフレーム(UNIFLAME) UF IRORI EXT 683170

ユニフレーム(UNIFLAME) UF IRORI EXT 683170