Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

sql server :buat indeks pada kunci asing jika perlu

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah protokol komunikasi SQL Server

  2. Cara Mengonversi String ke Tanggal/Waktu di SQL Server menggunakan CONVERT()

  3. Cara membagi nilai yang dipisahkan koma ke kolom

  4. Dapatkan baris pertama/terakhir dari grup ke-n berturut-turut

  5. Bagaimana saya bisa menghapus baris duplikat dalam tabel