没有排序顺序的SQL Server唯一约束

Sha*_*air 2 c# database sql-server unique-constraint

在SQL Server数据库中,我创建了一个唯一约束,以确保其中一个表只包含唯一的值对.

现在的问题是我得到的记录顺序是不同的.记录是按顺序排序的,但我希望它们按原始顺序排列,就像它们存在于表中一样,没有任何排序.

我已经到处检查过,但是找不到一种方法来创建一个没有排序顺序的唯一约束.这支持了吗?

小智 10

记录是按顺序排序的,但我希望它们按原始顺序排列,就像它们存在于表中一样,没有任何排序.

啊,旧的排序问题 - 初学者的SQL.

TABLES的排序顺序是聚集索引的顺序.错过了奇怪的未定义.

结果没有订单,除非定义.如果SQL认为可以更好地处理查询,则SQL可以更改顺序.这是基础 - 您处理数据集,并且不会对数据集本身进行排序.

所以,如果你想订购,请问它.

但无法找到一种方法来创建没有排序顺序的唯一约束.

为什么需要订单才能获得唯一约束?一个独特的索引就足够了,或者?我不会将唯一性作为约束,而是将 - 标准 - 作为字段的唯一索引.特别是因为指数是有利的 - 验证它们是独特的,因此无论如何都需要.

  • +1 - 如果你想要一个特定的订单,*ONLY*方式来保证它是向外部查询添加ORDER BY.即使存在聚簇索引 - 这也决定了SQL应该如何尝试和存储数据,而不是如何返回它.另外,唯一约束和唯一索引之间确实没有区别 - 它们都以完全相同的方式实现.您使用的应该取决于语义(例如,是强制唯一性的索引,还是尝试提高性能的副作用). (2认同)
  • @LoveDotNet这就是索引如何将数据存储在索引中,并且与索引的搜索/扫描方式有关,而不是SQL Server在通过查询检索数据时如何返回数据. (2认同)
  • @Aaron Bertrand,我想我现在明白了.创建索引后更改任意顺序使我认为您在索引中指定的排序顺序会影响服务器返回的记录的顺序.我现在将在查询中使用显式orderby. (2认同)