【发布时间】:2026-02-04 16:05:01
【问题描述】:
假设我有一个有 2 列的表:
- 城市
- (人名)。
我还有一个 Java“城市”对象,其中包含:
- 城市名称
- 该城市所有人的列表
所以现在我有两个选择来获取数据:
- 首先使用 DISTINCT 获取所有城市的列表。然后,对于每个城市,再次查询数据库,使用 WHERE 仅获取该人居住在该城市的记录。然后我可以将其存储在 City 对象中。
- 获取所有数据的列表,使用 ORDER BY 按城市名称排序。然后遍历所有记录并开始将它们存储在 City 对象中。当我检测到城市名称发生变化时,我可以创建一个新的 City 对象并将记录存储在其中。
以下哪种方法更快/更好?还是有比这两种方法更好的方法来获取这些信息?我正在使用 Oracle 数据库。
【问题讨论】:
-
你在这里混合了 ORM 和原始 SQL 的东西,我无法理解你的问题。你到底想做什么?
-
首先我会推荐用 SQL 来做这种东西,但是你为什么要进行多次查询来得到你的结果呢?一个查询似乎可行
-
绝对是#2。请注意,您可以在 Java 代码中使用
Map,而无需使用ORDER BY。 -
@Henkan Question 说
DISTINCT、WHERE和ORDER BY,表示这个问题是关于SQL的,所以说“我建议用SQL做这种东西” 有点多余。 --- 此外,OP 已经在 #2 中讨论了 1-query 解决方案,所以说 “一个查询似乎可行” 有点多余。 --- 你的评论是多余的,甚至没有试图回答这个问题:哪个更好? -
@Andreas 我想我的评论不清楚:我知道它将使用 SQL,我只是对我的意思是,如果可能的话,当然,进行返回确切所需结果的查询比得到更好一些数据,然后在代码中处理这些数据。所以这就是我推荐 SQL 的原因。