Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

sql сървър:създайте индекси на външни ключове, където е необходимо

Няма значение дали са създадени чрез 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

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. Как да намеря какво попълва таблица?

  2. SQL Server:Как да намерите всички имена на екземпляри на localdb

  3. SQL функция като стойност на параметър по подразбиране?

  4. Невъзможно е да се съхраняват определени формати за дата и час в SQL Server

  5. Как трябва да работя в този сценарий. Трябва ли да използвам Trigger или Leave on User за управление