Sql server 如何在SQL Server中维护插入顺序
我只是想知道我是否可以保持在SQL Server中插入数据的顺序 我正在做我自己的项目,这是一个有很多帖子的博客网站。我会将我的帖子保存到我的SQL Server,但我希望它们按插入的顺序排列 问题:我知道如果我在SQL Server中使用自动递增整数作为主键,我可以保持插入顺序。但是我想使用“Guid”作为主键,而不是标识。那么“Guid”似乎不能保持插入顺序 我应该使用自动递增整数作为插入顺序,使用Guid作为标识吗 或者,有没有其他方法可以在Guid设置为主键的情况下保持插入顺序 相关问题:我想保持插入顺序的原因是,这样我就不必使用导致额外排序过程的Sql server 如何在SQL Server中维护插入顺序,sql-server,Sql Server,我只是想知道我是否可以保持在SQL Server中插入数据的顺序 我正在做我自己的项目,这是一个有很多帖子的博客网站。我会将我的帖子保存到我的SQL Server,但我希望它们按插入的顺序排列 问题:我知道如果我在SQL Server中使用自动递增整数作为主键,我可以保持插入顺序。但是我想使用“Guid”作为主键,而不是标识。那么“Guid”似乎不能保持插入顺序 我应该使用自动递增整数作为插入顺序,使用Guid作为标识吗 或者,有没有其他方法可以在Guid设置为主键的情况下保持插入顺序 相关问题
orderby
子句
但我是否应该信任从数据库返回的数据的顺序,而不使用任何排序子句,如orderby
我应该总是使用一些排序子句来排序我的数据吗?那么如果我有大量的数据要订购呢?那我怎么处理这种情况呢
很抱歉,帖子中有太多问题,但我相信它们都是相关的。你被误导了
SQL表表示无序集。如果希望结果集按特定顺序排列,则需要在查询中使用orderby
子句。SQL优化器可能不使用排序方式,而是寻找另一种按顺序返回结果的方法
您可以拥有一个非主键的
标识
列。但实际上,您可以同时拥有identity
列和guid
列,前者作为主键,后者作为唯一键。另一个解决方案是使用CreatedAt
datetime。你可以用这个来订购。如果确实需要,甚至可以作为聚集索引。当您在INSERT…SELECT
语句中指定ORDER BY
时,SQL Server将按指定的顺序分配IDENTITY
值。但是,这并不意味着必须按该顺序插入行
如果需要按特定顺序返回行,则必须使用
orderby
来保证排序。索引可以根据查询细节有效地提供订单数据 表是一组无序的行。即使使用guid和auto inc number,也需要使用order by以特定顺序获取数据。RDBMS中没有插入顺序表这种东西。@GurV oh所以当我实际使用auto inc number时,数据在Sql management studio中按插入顺序显示,但当我实际查询表时,它不保证顺序/这就是你的意思吗??抱歉,我对数据库太陌生了。没有order by子句,无法保证数据会被排序。实际上,我有用于保存插入时间的主键Guid和datetime列,并设置了default=GETDATE(),但它不按插入日期排序数据。我应该设置其他内容吗?哦,你的意思是如果我有datetime列,那么我可以使用datatime列和orderby???@Michael。当然可以。您还可以在其上设置性能索引。当然,你必须使用按排序。哦,如果我有大量数据要按插入日期排序,那么我可能应该考虑制定索引计划。是吗?我只是好奇,谷歌必须有大量的数据来比较和排序的日期,它如何处理在设置我的数据库的中间。haGoogle的搜索引擎不使用关系数据库。为避免在执行计划中进行排序,索引键应包括等式WHERE
子句谓词,后跟排序和/或筛选日期。