如何维护SQL Server

时间:2017-01-29 03:54:30

标签: sql-server

我只是想知道我是否可以维护SQL Server中的数据插入顺序?

我正在开发自己的项目,这是一个有很多帖子的博客网站。我会将我的帖子保存到我的SQL Server,但我希望它们按插入顺序排列。

问题:据我所知,如果我在SQL Server中使用自动递增整数作为主键,我可以保持插入的顺序。但我想使用“Guid”作为主键,而不是身份。然后“Guid”似乎没有保持插入的顺序。

我是否应该同时使用自动递增整数作为插入顺序和Guid进行标识?

或者还有其他方法可以保持Guid设置为主键的插入顺序吗?

相关问题:我想维持插入顺序的原因是,这样,我不必使用导致额外排序过程的order by子句。

但是我不应该相信从数据库返回的数据顺序没有任何排序条款,如order by

我是否应该总是使用一些订购条款来订购我的数据?如果我要订购大量数据怎么办?那我该怎么办呢?

对于帖子中的太多问题感到抱歉,但我相信它们都是相关的。

2 个答案:

答案 0 :(得分:1)

你被误导了。

SQL表表示无序集。如果您希望按特定顺序设置结果集,则需要在查询中使用ORDER BY子句。 SQL优化器可能不使用ORDER BY,找到另一种方法按顺序返回结果。

您可以拥有一个不是主键的identity列。但实际上,您可以同时拥有identity列和guid列,前者为主键,后者为唯一键。另一种解决方案是拥有CreatedAt日期时间。您可以使用它进行订购。 。 。如果你真的想要,甚至可以作为聚集索引。

答案 1 :(得分:1)

ORDER BY语句中指定INSERT...SELECT时,SQL Server将按指定的顺序分配IDENTITY个值。但是,这并不意味着必须按顺序插入行。

如果您需要按特定顺序返回的行,则必须使用ORDER BY来保证订购。索引可以根据查询细节有效地提供订单数据。