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

sql server:必要时在外键上创建索引

发布时间:2020-12-12 16:34:34 所属栏目:MsSql教程 来源:网络整理
导读:我有很多表与外键,有些有索引,而其他没有. 所有外键都被命名为FK_外键的名称索引名称为IX_外键的名称gt ;. 有没有一些良好的做法,给定列的基数,创建(或不)索引? 这可以用T-SQL命令编写吗? 解决方法 如果它们是通过T-SQL脚本或通过Designer创建的,这并不重要
我有很多表与外键,有些有索引,而其他没有.
所有外键都被命名为FK_<外键的名称>索引名称为IX_<外键的名称&gt ;. 有没有一些良好的做法,给定列的基数,创建(或不)索引?
这可以用T-SQL命令编写吗?

解决方法

如果它们是通过T-SQL脚本或通过Designer创建的,这并不重要.你的问题有点含糊不清,所以我不确定你是否也可以索引所有的外键.但是,如果是,则应在查询中频繁引用的列上创建索引,并且可以执行以下操作来提高性能:

>运行数据库调优向导,该向导将提供改进的摘要并推荐索引.
>索引所有外键并运行执行计划(查看查询执行速度更快或更慢).

要通过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

(编辑:李大同)

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

    推荐文章
      热点阅读