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

标签 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'

它们是有序的吗?

索引是:

 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]

我以前从未遇到过这个问题,有没有人知道发生了什么以及我该如何解决这个问题。

谢谢

最佳答案

如果不指定订单,则不能依赖订单。添加一个 order by 子句。

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

关于sql-server - SQL Server 行不按聚集索引的顺序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27961330/

相关文章:

sql - 如何处理将 DBNull 传递给函数?

c# - 在 DateTime 比较期间,如何强制 Entity Framework 使用 datetime 而不是 datetime2?

sql - Qry 运行时间太长,索引不起作用

sql - 我应该在 T-SQL 字符串中转义哪些特殊字符?

sql-server - 如何结合索引和列存储索引?

c# - 避免使用实体类内的方法定义进行查询时出现查询客户端评估错误

java - Hibernate:如何指定聚簇索引注释

sql-server - 非标识列上的聚簇索引可加速批量插入?

java - Carrot2 在搜索时不显示所有包含特定单词的簇