我们的一个数据库中有一张表,其结构大致如下:
Field1 int primary key
Field2 int foreign key A
Field3 int foreign key B
Field4 int foreign key C
Field5 ... Field70 diverse data types, for the "payload"
Run Code Online (Sandbox Code Playgroud)
外键列上有索引,尽管只有键列,没有任何包含的列。索引分析例程不断建议具有相同键列的新索引,这些列已经存在索引,但包含许多列 - 在一种情况下甚至是所有 Field5 到 Field70。我有点犹豫是否要创建包含如此多列的索引 - 感觉就像复制表本身。
对于索引中包含的列的数量是否有一些经验法则限制,或者我应该继续将现有索引(仅键列)替换为具有相同键列和如此多包含列的索引?
提前致谢。
建议的索引总是倾向于包含访问数据的查询所需的尽可能多的列,以便具有覆盖索引并消除查找的需要。
这是好事还是坏事,只有你自己才能知道。这在很大程度上取决于您的工作负载的形状。一些查询将从覆盖索引中受益匪浅,而另一些查询则几乎不会得到改善。
将列包含在非聚集索引中还意味着每当您更改这些列中的数据时,更改也必须写入索引。广泛的索引是有成本的。
也有可能其中一些列最好放置在索引键内而不是包含在内。某些查询可能会受益于索引中的有序数据。
确定的唯一方法是基准测试:
没有其他方法可以确定。
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |