Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server行不按聚集索引的顺序排列_Sql Server_Clustered Index - Fatal编程技术网

Sql server SQL Server行不按聚集索引的顺序排列

Sql server SQL Server行不按聚集索引的顺序排列,sql-server,clustered-index,Sql Server,Clustered Index,我有一个在id上有聚集索引的表 [SomeID] [bigint] IDENTITY(1,1) NOT NULL, 当我这样做的时候 select top 1000 * from some where date > '20150110' 我的记录不好 当我这样做时: select top 1000 * from some where date > '20150110' and date < '20150111' 我以前从未遇到过这种情况,有没有人知道发生了什么以及我如何解

我有一个在id上有聚集索引的表

[SomeID] [bigint] IDENTITY(1,1) NOT NULL,
当我这样做的时候

select top 1000 * from some where date > '20150110'
我的记录不好

当我这样做时:

select top 1000 * from some where date > '20150110' and date < '20150111'
我以前从未遇到过这种情况,有没有人知道发生了什么以及我如何解决这个问题


谢谢

如果不指定订单,您就不能依赖订单。添加一个
orderby
子句


否则,数据库将尽可能快地获取结果,而这并不总是按照索引的顺序。

确保结果的特定顺序的唯一(实际上唯一)方法是使用
orderby
。如果不使用它,DB可以自由地以任何顺序返回行。当我添加第二个索引时,我被这个问题绊倒了。我以前从未见过这种情况。我认为聚集索引按键存储和排序数据,在本例中为id。因此,从db中选择的顺序自然就是它们的存储顺序?@charlesbreant存储的数据按聚集索引排序,但是,如果数据库引擎决定并行化查询执行,您认为会发生什么?您将有未排序的结果。此外,如果您的表有一些其他索引,SQL引擎可能会使用这些索引并按顺序返回数据-查看您的查询,您可能有日期字段索引,这在第一种情况下可能不会使用。正如许多人已经注意到的,您必须始终使用ORDER BY。
 CONSTRAINT [PK_Some] PRIMARY KEY CLUSTERED 
(
    [SomeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]