我只是想知道我是否可以维护SQL Server中的数据插入顺序?
我正在开发自己的项目,这是一个有很多帖子的博客网站。我会将我的帖子保存到我的SQL Server,但我希望它们按插入顺序排列。
问题:据我所知,如果我在SQL Server中使用自动递增整数作为主键,我可以保持插入的顺序。但我想使用“Guid”作为主键,而不是身份。然后“Guid”似乎没有保持插入的顺序。
我是否应该同时使用自动递增整数作为插入顺序和Guid进行标识?
或者还有其他方法可以保持Guid设置为主键的插入顺序吗?
相关问题:我想维持插入顺序的原因是,这样,我不必使用导致额外排序过程的order by
子句。
但是我不应该相信从数据库返回的数据顺序没有任何排序条款,如order by
?
我是否应该总是使用一些订购条款来订购我的数据?如果我要订购大量数据怎么办?那我该怎么办呢?
对于帖子中的太多问题感到抱歉,但我相信它们都是相关的。
答案 0 :(得分:1)
你被误导了。
SQL表表示无序集。如果您希望按特定顺序设置结果集,则需要在查询中使用ORDER BY
子句。 SQL优化器可能不使用ORDER BY
,找到另一种方法按顺序返回结果。
您可以拥有一个不是主键的identity
列。但实际上,您可以同时拥有identity
列和guid
列,前者为主键,后者为唯一键。另一种解决方案是拥有CreatedAt
日期时间。您可以使用它进行订购。 。 。如果你真的想要,甚至可以作为聚集索引。
答案 1 :(得分:1)
在ORDER BY
语句中指定INSERT...SELECT
时,SQL Server将按指定的顺序分配IDENTITY
个值。但是,这并不意味着必须按顺序插入行。
如果您需要按特定顺序返回的行,则必须使用ORDER BY
来保证订购。索引可以根据查询细节有效地提供订单数据。