【问题标题】:Sql server clustered index on multiple column with different sort direction具有不同排序方向的多列上的Sql server聚集索引
【发布时间】:2015-03-31 05:49:01
【问题描述】:

我可以在具有不同排序方向的多个列上创建聚集索引吗?例如 在 Table1 上创建聚集索引 IX_Name(Empid asc,empname desc,sal asc)

如果答案是肯定的,我很想知道如何,因为聚集索引以一种特定的顺序存储数据,在上述情况下,我们希望在三个不同的排序方向上创建索引。

提前致谢

【问题讨论】:

  • 如果您按“Empid asc,empname desc,sal asc”的顺序查询数据,那么您按此顺序获取数据,是吗?聚集索引(按此顺序)的排序方式相同。
  • 我不明白这种混淆。作为一个简化的示例,考虑两列 (a desc, b asc) 和四行的索引 - (1,a)(2,a)(1,b)(2,b)。好吧,我们按该规范对它们进行排序,并按(2,a)(2,b)(1,a)(1,b) 的顺序对它们进行索引。就是这样。

标签: sql clustered-index


【解决方案1】:

是的,你可以,而且索引的值甚至不需要是唯一的,如果不是,SQL Server 将为每一行附加一个行标识符以使其唯一

【讨论】:

    【解决方案2】:

    基于单个Unique/Primary key的簇索引,在此基础上制作B-Tree,如果要在多个列上使用,我们不能说cluster索引,它会非集群索引,因为在非集群索引中我们使用多列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2010-11-04
      • 1970-01-01
      相关资源
      最近更新 更多