gpt4 book ai didi

sql-server - 多索引与多列索引

转载 作者:太空狗 更新时间:2023-10-30 01:36:36 25 4
gpt4 key购买 nike

跨多列创建一个索引与创建多个索引,列有什么区别?

有什么理由应该优先使用一个?

例如:

Create NonClustered Index IX_IndexName On TableName
(Column1 Asc, Column2 Asc, Column3 Asc)

对比:

Create NonClustered Index IX_IndexName1 On TableName
(Column1 Asc)

Create NonClustered Index IX_IndexName2 On TableName
(Column2 Asc)

Create NonClustered Index IX_IndexName3 On TableName
(Column3 Asc)

最佳答案

我同意 Cade Roux .

这篇文章应该能让您走上正轨:

需要注意的一点是,聚簇索引应该有一个唯一键(我会推荐一个标识列)作为第一列。基本上它可以帮助您将数据插入到索引的末尾,而不会导致大量的磁盘 IO 和页面拆分。

其次,如果您正在为您的数据创建其他索引并且它们的构造巧妙,它们将被重用。

例如假设您在三列上搜索表格

州、县、邮政编码。

  • 您有时只按州搜索。
  • 您有时会按州和县进行搜索。
  • 您经常按州、县、 zip 进行搜索。

然后是带有州、县、 zip 的索引。将用于所有这三个搜索。

如果您经常单独使用 zip 进行搜索,那么上面的索引将不会被使用(SQL Server 无论如何),因为 zip 是该索引的第三部分,查询优化器不会认为该索引有帮助。

然后您可以单独在 Zip 上创建一个索引,用于此实例。

顺便说一句We can take advantage of the fact that with Multi-Column indexing the first index column is always usable for searching当您仅按“state”搜索时,它是高效的,但不如“state”上的单列索引高效

我想您正在寻找的答案取决于您经常使用的查询的 where 子句以及您的分组依据。

这篇文章会有很大帮助。 :-)

关于sql-server - 多索引与多列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179085/

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