Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

serwer sql :w razie potrzeby utwórz indeksy na kluczach obcych

Nie ma znaczenia, czy są tworzone za pomocą skryptu T-SQL, czy za pomocą Designera. Twoje pytanie jest trochę niejednoznaczne, więc nie jestem pewien, czy pytasz również, czy indeksowanie wszystkich kluczy obcych jest w porządku. Jeśli jednak tak jest, indeksy powinny być tworzone na kolumnach, do których często się odwołują w zapytaniach, i możesz wykonać następujące czynności, aby poprawić wydajność:

  • Uruchom kreatora dostrajania bazy danych, który dostarczy podsumowanie ulepszeń i zarekomenduje indeksy.

  • Zindeksuj wszystkie klucze obce i uruchom plan wykonania (aby sprawdzić, czy zapytania działają szybciej czy wolniej).

Aby utworzyć indeks za pomocą T-SQL :

CREATE INDEX IX_INDEX_NAME
ON Table (FieldName); 

Aby uzyskać listę wszystkich kluczy obcych:

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

Aby wygenerować skrypt, który zastosuje indeksy do wszystkich kluczy obcych, możesz to zrobić:

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. zsumuj niektóre wartości węzłów xml w serwerze sql 2008

  2. Wygeneruj losową liczbę, której nie ma w tabeli na serwerze sql

  3. 3 sposoby wyodrębnienia roku z daty w SQL Server (T-SQL)

  4. na serwerze sql, jak uzyskać wartości kolumn z ` ` oddzielnymi?

  5. Jak dołączyć trzecią tabelę w mojej instrukcji SQL, która zwraca LICZBA bez utraty elementów licznika 0?