加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 在每个外键上添加索引的脚本?

发布时间:2020-12-12 06:58:46 所属栏目:MsSql教程 来源:网络整理
导读:在SQL Server中看作 foreign key does not automatically create an index,我想在我的数据库中的每个FK字段上创建一个显式索引.我在模式中有超过100个表… 那么,有没有人有一个现成的打包脚本,我可以用来检测所有FK并在每个FK上创建一个索引? 解决方法 好的,
在SQL Server中看作 foreign key does not automatically create an index,我想在我的数据库中的每个FK字段上创建一个显式索引.我在模式中有超过100个表…

那么,有没有人有一个现成的打包脚本,我可以用来检测所有FK并在每个FK上创建一个索引?

解决方法

好的,这是我对此的看法.我添加了对方案的支持,并检查是否存在具有当前命名约定的索引.这样,在修改表时,可以检查缺失的索引.
SELECT 'CREATE NONCLUSTERED INDEX IX_' + s.NAME + '_' + o.NAME + '__' + c.NAME + ' ON ' + s.NAME + '.' + o.NAME + ' (' + c.NAME + ')'
    FROM sys.foreign_keys fk
    INNER JOIN sys.objects o ON fk.parent_object_id = o.object_id
    INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
    INNER JOIN sys.columns c ON fkc.parent_object_id = c.object_id
        AND fkc.parent_column_id = c.column_id
    INNER JOIN sys.tables t ON t.object_id = o.object_id
    INNER JOIN sys.schemas s ON s.schema_id = t.schema_id
    LEFT JOIN sys.indexes i ON i.NAME = ('IX_' + s.NAME + '_' + o.NAME + '__' + c.NAME)
    WHERE i.NAME IS NULL
    ORDER BY o.NAME

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读