Não importa se eles são criados por meio de um script T-SQL ou por meio do Designer. Sua pergunta é um pouco ambígua, então não tenho certeza se você também está perguntando se pode indexar todas as chaves estrangeiras. No entanto, se estiver, os índices devem ser criados em colunas que são referenciadas com frequência em consultas e você pode fazer o seguinte para melhorar o desempenho:
-
Execute o assistente de ajuste de banco de dados que fornecerá um resumo de melhorias e índices recomendados.
-
Indexe todas as chaves estrangeiras e execute o plano de execução (para ver se as consultas estão sendo executadas mais rapidamente ou mais lentamente).
Para criar um índice via
T-SQL
:CREATE INDEX IX_INDEX_NAME
ON Table (FieldName);
Para obter uma lista de todas as chaves estrangeiras:
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
Para gerar um script que aplique índices em todas as chaves estrangeiras, você pode fazer isso:
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