sql >> Databáze >  >> RDS >> Sqlserver

sql server:v případě potřeby vytvořte indexy cizích klíčů

Nezáleží na tom, zda jsou vytvořeny pomocí skriptu T-SQL nebo pomocí Návrháře. Vaše otázka je trochu nejednoznačná, takže si nejsem jistý, zda se také ptáte, zda je v pořádku indexovat všechny cizí klíče. Pokud však ano, indexy by měly být vytvořeny na sloupcích, na které se v dotazech často odkazuje, a pro zlepšení výkonu můžete provést následující:

  • Spusťte průvodce laděním databáze, který poskytne souhrn vylepšení a doporučí indexy.

  • Indexujte všechny cizí klíče a spusťte plán provádění (Chcete-li zjistit, zda se dotazy provádějí rychleji nebo pomaleji).

Chcete-li vytvořit index pomocí T-SQL :

CREATE INDEX IX_INDEX_NAME
ON Table (FieldName); 

Chcete-li získat seznam všech cizích klíčů:

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

Chcete-li vygenerovat skript, který použije indexy pro všechny cizí klíče, můžete provést toto:

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. nemohl nastavit hodnotu pole pomocí seřizovače odrazů

  2. Jak automaticky odstranit všechny referenční řádky, pokud dojde k odstranění nadřazeného řádku v mysql?

  3. Automatická extrakce dat - Oracle SQL Developer

  4. Analyzujte XML na SQL Server