gpt4 book ai didi

sql - 创建2个具有相同键列但包含不同列的非聚集索引

转载 作者:行者123 更新时间:2023-12-03 01:00:38 25 4
gpt4 key购买 nike

我有一个从 SQL Server MCSA 培训工具包借来的存储过程,它显示了我的数据库中缺少的索引。结果中有两条建议:

  1. 两个关键列 + 2 个包含内容
  2. 相同的两个关键列 + 7 个包含

我的问题是,使用相同的键创建两个非聚集索引是否是一种好的做法,即使它们具有不同的包含列?

创建一个包含所有包含列(9 列)的列不是更好吗?

注意:第二个索引推荐还包含第一个索引推荐中的所有字段。

谢谢

最佳答案

Would it not be better to create one with all the included columns (9 columns)?

这取决于不同列的相对大小。假设您的表格有以下 11 列:

indexedCol1 int
indexedCol2 int
col1 int
col2 int
col3 varchar(1000)
col4 varchar(1000)
col5 varchar(1000)
col6 varchar(1000)
col7 varchar(1000)
col8 varchar(1000)
col9 varchar(1000)

包含 col1col2 的索引将具有大小略大于 16 字节的叶子。每 8kb 页面可以容纳大约 500 个索引叶。检索 5000 行将需要读取 10 页

包含 col1col9 的索引将具有最大大小略高于 7032 字节的叶子。假设这些 varchar 列平均已满 10%。一行的平均大小为 700 字节。每 8kBytes 页可以容纳 11 个索引叶。检索 5000 行将需要大约 450 个页面读取。会慢很多。

这当然是一个例子。但我认为这是处理这个问题的方式。

For example, if it uses the common key and needs to return a column that is included in both indexes, will it choose the one with less includes or not.

我会这么说。但这只是猜测。

关于sql - 创建2个具有相同键列但包含不同列的非聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24570263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com