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

SQL Server :必要に応じて外部キーにインデックスを作成します

    T-SQL スクリプトを使用して作成するか、デザイナを使用して作成するかは問題ではありません。あなたの質問は少しあいまいなので、すべての外部キーにインデックスを付けてもよいかどうかも尋ねているかどうかはわかりません.ただし、その場合は、クエリで頻繁に参照される列にインデックスを作成する必要があり、パフォーマンスを向上させるために次のことを行うことができます:

      <リ>

      改善の概要と推奨インデックスを提供するデータベース チューニング ウィザードを実行します。

      <リ>

      すべての外部キーにインデックスを付け、実行計画を実行します (クエリの実行速度が速いか遅いかを確認するため)。

    T-SQL を使用してインデックスを作成するには :

    CREATE INDEX IX_INDEX_NAME
    ON Table (FieldName); 
    

    すべての外部キーのリストを取得するには:

    SELECT f.name AS ForeignKey, 
     OBJECT_NAME(f.parent_object_id) AS TableName, 
     COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName, 
     OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName, 
     COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName 
    FROM sys.foreign_keys AS f 
    INNER JOIN sys.foreign_key_columns AS fc 
    ON f.OBJECT_ID = fc.constraint_object_id
    

    すべての外部キーにインデックスを適用するスクリプトを生成するには、次のようにします:

    SELECT 'CREATE INDEX [IX_' + f.name + '] ON ' + OBJECT_NAME(f.parent_object_id) + '(' + COL_NAME(fc.parent_object_id, fc.parent_column_id) + ')]'
    FROM sys.foreign_keys AS f 
    INNER JOIN sys.foreign_key_columns AS fc 
    ON f.OBJECT_ID = fc.constraint_object_id
    

    http://msdn.microsoft.com/en-us/library/ms188783 .aspx



    1. OracleのCHARTOROWID()関数

    2. 間違ったmysql設定でrootパスワードをリセットする

    3. DAYNAME()の例– MySQL

    4. レポート時のSQLクエリの問題