【发布时间】:2015-02-08 13:37:26
【问题描述】:
我们目前在显示带有子查询的有序对象时遇到问题。
我们有一个表格,我们在其中保存与它们的排名相对应的对象的顺序。现在,如果有人想亲自查看实际对象,我们进行以下查询(查询简化并更改名称):
from Object as object where object.id = some ( select objectid from RankingObject where type = :object_type ))
由于我们不想在每次请求此类查询时对所有对象进行排名,因此我们定期执行排名(以及 RankingObjects 的创建),然后仅查找与 RankingObjects 对应的对象,这些对象根据排名算法(排名最高的对象是表中的第一个)。
子查询以正确的顺序返回对象,就像它们保存在数据库中一样。外部查询返回正确的对象,但它们的顺序与内部查询不对应,而是与数据库中出现的顺序相对应(最旧的对象首先出现)。
我的问题:我们如何在外部查询上强制执行内部查询的顺序?当然,对每个子查询项执行一次查询在性能方面是没有选择的。
【问题讨论】: