0

所以有点奇怪,我真的找不到任何原因。

我的应用程序设置为基本上通过一种标准方法运行几乎所有查询,该方法处理诸如查询本地缓存等事情。所以基本上查询都是非常标准化的。

然后我只有一个,有一个奇怪的 orderby 问题。该查询包含一个特定的 orderby 子句,如果我第一次运行该查询,则检查缓存,未找到任何结果,查询远程数据源,获取数据,全部正确且有序。

当我返回页面时,再次执行查询,并针对本地缓存执行查询,在那里它确实找到数据并返回它......奇怪的部分是顺序颠倒了。记住进去的参数是完全一样的,唯一的区别就是用executeQueryLocally执行查询,找到结果,返回(第一次查询还是用executeQueryLocally执行,只是没有找到结果它继续远程执行它)。

我真的看不出结果为什么会反转的任何具体问题(我说它们是反转的,我实际上不能保证 - 它们可能只是无序的并且碰巧以相反的顺序出现)

这并没有真正引起头痛,只是很奇怪,特别是因为它似乎只是发生这种情况的一个查询)。

想法?

4

1 回答 1

0

除非您指定了“orderBy”子句,否则服务器端查询和客户端查询不能保证以任何特定顺序返回结果。没有“orderBy”子句的顺序可能不同的原因是数据在服务器和客户端上的存储方式非常不同,除非指定了特定的顺序,否则两者都将尝试尽可能有效地满足存储实现的查询.

一个有趣的旁注是,根据 ANSI 92 SQL 标准,即使您的 SQL 数据库也不需要为相同的查询以相同的顺序返回数据(同样,除非您有 ORDER BY 子句)。只是很难看到它发生。

于 2013-10-14T16:32:56.050 回答