Сценарий для добавления индекса на каждом внешнем ключе?

Наблюдение как внешний ключ автоматически не создает индекс в SQL Server, я хочу создать явный индекс на каждом поле FK в моей базе данных. И у меня есть более чем 100 таблиц в схеме...

Так, у кого-либо есть готовый упакованный сценарий, который я мог использовать, чтобы обнаружить весь FKs и создать индекс на каждом?

7
задан Community 23 May 2017 в 12:01
поделиться

1 ответ

ОК, я сам разобрался с этим - вот для всех остальных...

select 'create index IX_'+c.name+'_'+p.name+' on '+c.name+'('+cf.name+');'
from sysforeignkeys fk join sysobjects c on fk.fkeyid=c.id
join sysobjects p on fk.rkeyid=p.id
join syscolumns cf on c.id=cf.id and cf.colid = fk.fkey
left join sysindexkeys k on k.id = cf.id and k.colid = cf.colid
where k.id is null
order by c.name

Это не работает на 100%, например, если у вас два FK на одной таблице к одной и той же первичной таблице, но таких случаев достаточно мало (по крайней мере, в моей БД), чтобы я мог исправить их вручную.

9
ответ дан 6 December 2019 в 09:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: