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