top of page
Foto do escritorCloudDB

SQL Server - Gera script índices chaves estrangeiras

Atualizado: 20 de nov. de 2019

Você, desenvolvedor, cria índices nas chaves estrangeiras ? Essa é uma boa prática porque evita o produto cartesiano, 
table scan e tende a diminuir o uso de recursos do seu hardware. Nunca entendi monitorar hardware e por que não atuar na causa raiz?
Imagine que os índices acima irão ajudar nos joins e atualizações na tabela pai. Por quê? porque o Banco de Dados irá encontrar mais rápido 
os dados para garantir a integridade.

Dá muito trabalho revisar agora? Não se você utilizar o script que já gerar para você todos os índices nas chaves estrangeiras.

--Create non clustered indexes for all foreign key references in the database DECLARE @sql nvarchar(max) SELECT @sql = IsNull(@sql + ';' + char(13) , '') + 'CREATE NONCLUSTERED INDEX [IX_' + tablename + '_' + columnname +'] ON ' + schema_names + '.[' + tablename + '] ( [' + columnname + '] ASC)' FROM --Display the sql that will be executed ( SELECT o.name AS tablename, cols.name AS columnName, sch.name as 'schema_names' FROM sys.foreign_key_columns fc inner join sys.objects o on fc.parent_object_id = o.object_id inner join sys.columns cols on cols.object_id = o.object_id and fc.parent_column_id = cols.column_id inner join sys.schemas sch on o.schema_id = sch.schema_id EXCEPT SELECT o.name, cols.name ,sch.name as 'schema_names' FROM sys.index_columns icols inner join sys.objects o on icols.object_Id = o.object_id inner join sys.columns cols on cols.object_id = o.object_id inner join sys.schemas sch on o.schema_id = sch.schema_id and icols.column_id = cols.column_id) T Print @sql --select * from sys.objects --select * from sys.schemas

71 visualizações0 comentário

Posts recentes

Ver tudo

Comentarios


bottom of page