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

前端之家收集整理的这篇文章主要介绍了sql server:必要时在外键上创建索引前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有很多表与外键,有些有索引,而其他没有.
所有外键都被命名为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

原文链接:https://www.f2er.com/mssql/81854.html

猜你在找的MsSQL相关文章