Sql server 在两台服务器上的同一数据库上运行的同一查询返回的顺序不同
我在两个SQL Server 2008R2实例上的两个数据库还原上运行了一个查询,它们返回的结果具有不同的顺序(在一台服务器上按ID排序,在另一台服务器上不按顺序排序) 如您所见,查询中没有ORDERBY子句,但结果的显示顺序不同 我曾尝试为这两个表重建索引,但没有成功 在服务器上运行Sql server 在两台服务器上的同一数据库上运行的同一查询返回的顺序不同,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我在两个SQL Server 2008R2实例上的两个数据库还原上运行了一个查询,它们返回的结果具有不同的顺序(在一台服务器上按ID排序,在另一台服务器上不按顺序排序) 如您所见,查询中没有ORDERBY子句,但结果的显示顺序不同 我曾尝试为这两个表重建索引,但没有成功 在服务器上运行SELECT*FROM bankCodes时,如果上述查询的排序是通过ID隐式完成的,则不会对结果进行排序(按主键列),而是在JOIN与bankFormat表连接后,对结果进行排序 我不知道还要找什么来解释这一点
SELECT*FROM bankCodes
时,如果上述查询的排序是通过ID隐式完成的,则不会对结果进行排序(按主键列),而是在JOIN
与bankFormat
表连接后,对结果进行排序
我不知道还要找什么来解释这一点
还有谁能提出这是什么原因吗
可能与数据库排序、索引或主键/外键有关吗?这是因为您没有添加
order by
子句
DB针对速度进行了优化。如果指定订单,数据将以这种方式传递。但如果没有它,它只会以任何顺序尽可能快地抓取记录
这就是为什么您不能依赖任何“隐式”排序。如果您需要,请定义一个,否则您不能依赖任何东西。这是因为您没有添加
order by
子句
DB针对速度进行了优化。如果指定订单,数据将以这种方式传递。但如果没有它,它只会以任何顺序尽可能快地抓取记录
这就是为什么您不能依赖任何“隐式”排序。如果您需要,请定义一个,否则您不能依赖任何东西。这是因为您没有添加
order by
子句
DB针对速度进行了优化。如果指定订单,数据将以这种方式传递。但如果没有它,它只会以任何顺序尽可能快地抓取记录
这就是为什么您不能依赖任何“隐式”排序。如果您需要,请定义一个,否则您不能依赖任何东西。这是因为您没有添加
order by
子句
DB针对速度进行了优化。如果指定订单,数据将以这种方式传递。但如果没有它,它只会以任何顺序尽可能快地抓取记录
这就是为什么您不能依赖任何“隐式”排序。如果您需要,请定义一个,否则您将无法依赖任何内容。当您不添加
order BY
子句时,为什么数据会以特定顺序从数据库返回:
- 索引
- 资料
- 插入数据的顺序(这可能会影响数据在磁盘上的存储方式、分页方式等)
- 联接的顺序(指定联接的顺序和数据库引擎决定考虑/执行联接的顺序)
- 数据库引擎决定执行联接或
子句的方式,如哈希表、哈希集、合并联接、表查找等将影响数据的“自然”顺序WHERE
orderby
这条规则的推论:
如果不添加订单依据
条款,您将失去对(错误)订单的所有关注/投诉权利
当您不添加
order BY
子句时,以特定顺序从数据库返回数据的原因包含大量元素:
- 索引
- 资料
- 插入数据的顺序(这可能会影响数据在磁盘上的存储方式、分页方式等)
- 联接的顺序(指定联接的顺序和数据库引擎决定考虑/执行联接的顺序)
- 数据库引擎决定执行联接或
子句的方式,如哈希表、哈希集、合并联接、表查找等将影响数据的“自然”顺序WHERE
orderby
这条规则的推论:
如果不添加订单依据
条款,您将失去对(错误)订单的所有关注/投诉权利
当您不添加
order BY
子句时,以特定顺序从数据库返回数据的原因包含大量元素:
- 索引
- 资料
SELECT C.ID AS CodeID , C.Format FormatId FROM bankCodes C INNER JOIN bankFormat F ON (C.Format = F.ID)