Tidak masalah jika mereka dibuat melalui Skrip T-SQL atau melalui Perancang. Pertanyaan Anda agak ambigu, jadi saya tidak yakin apakah Anda juga bertanya apakah boleh mengindeks semua kunci asing. Namun, jika ya, indeks harus dibuat pada kolom yang sering dirujuk dalam kueri dan Anda dapat melakukan hal berikut untuk meningkatkan kinerja:
-
Jalankan wizard penyetelan basis data yang akan memberikan ringkasan peningkatan dan merekomendasikan indeks.
-
Indeks semua kunci asing dan jalankan rencana eksekusi (Untuk melihat apakah kueri berkinerja lebih cepat atau lebih lambat).
Untuk membuat indeks melalui T-SQL
:
CREATE INDEX IX_INDEX_NAME
ON Table (FieldName);
Untuk mendapatkan daftar semua kunci Asing:
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
Untuk menghasilkan skrip yang menerapkan indeks di semua kunci asing, Anda dapat melakukan ini:
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