不管它们是通过 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