sql >> データベース >  >> RDS >> Sqlserver

SQLServerデータベース内のすべてのNULL可能列を一覧表示します

    データベース内のNULL可能列は、パフォーマンスの問題を引き起こす場合があります。これは、null許容列が常にパフォーマンスの問題を引き起こすとは限りませんが、パフォーマンスの問題が発生した場合、null許容列を特定することで、問題がどこにあるかについての手がかりが得られる可能性があります。列をNOT NULLにすることがあります パフォーマンスの向上に役立ちます。

    「NULL可能列」とは、NULLを許可する列を意味します。列の定義にNOT NULLが含まれていない場合 、次にNULL値を許可し、「null許容」です。

    以下は、SQLServerのデータベース内のすべてのnull許容列を一覧表示できるようにするコードです。

    例1-INFORMATION_SCHEMA.COLUMNS

    この情報スキーマビューには、現在のデータベースの現在のユーザーがアクセスできるすべての列が一覧表示されます。 IS_NULLABLEという列があります 。関連する列でNULLが許可されている場合、この列は YES を返します。 。それ以外の場合、 NO 返されます。

    SELECT *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE IS_NULLABLE = 'YES';
    

    これにより、ビューのすべての列が一覧表示されます。

    例2–指定された列が少ないINFORMATION_SCHEMA.COLUMNS

    ビューからすべての列を返す必要がない場合があります。返される列が少ない例を次に示します。

    SELECT
        TABLE_SCHEMA,
        TABLE_NAME,
        COLUMN_NAME,
        COLUMN_DEFAULT,
        DATA_TYPE
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE IS_NULLABLE = 'YES'
    ORDER BY TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME;
    

    例3–sys.columnsの使用

    INFORMATION_SCHEMA.COLUMNSを使用したくない場合 ビューを表示すると、sys.columnsにクエリを実行できます。 代わりに表示します。

    ただし、テーブルやスキーマなどを返す場合は、いくつかの結合を行う必要があります。

    例:

    SELECT 
        SCHEMA_NAME(t.schema_id) AS [Schema],
        t.name AS [Table],
        c.name AS [Column],
        dc.definition AS [Column Default],
        ty.name AS [Data Type]
    FROM sys.tables AS t
    INNER JOIN sys.columns AS c 
        ON t.object_id = c.object_id
    LEFT JOIN sys.types AS ty 
        ON c.user_type_id = ty.user_type_id
    LEFT JOIN sys.default_constraints dc  
        ON c.default_object_id = dc.object_id
    WHERE c.is_nullable = 1
    ORDER BY [Schema], [Table], [Column];
    

    1. psql内からpostgresqlデータベースをバックアップする方法は?

    2. トリガーがテーブルにある場合、OUTPUT句でUPDATEを使用することはできません

    3. PHPでMySQLAPIを混在させることはできますか?

    4. Joomlaのテンプレートのトップ9データベース管理システム