首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL查询速度:多个查询与Java中的排序

SQL查询速度:多个查询与Java中的排序
EN

Stack Overflow用户
提问于 2018-07-26 14:17:19
回答 3查看 210关注 0票数 1

假设我有一个包含2列的表:

  1. (一个人的)城市名称。

我还有一个Java "city“对象,它包含:

  1. 城市名称
  2. 该城市中所有人的列表

因此,现在我有两个选择来获取数据:

  1. 首先使用DISTINCT获得所有城市的列表。然后,对于每个城市,再次查询数据库,使用WHERE仅获取此人在该城市居住的记录。然后,我可以将其存储在一个城市对象中。
  2. 获取所有数据的列表,使用ORDER BY按城市名称排序。然后遍历所有记录,并开始将它们存储在City对象中。当我检测到城市名称发生变化时,我可以创建一个新的城市对象并将记录存储在该对象中。

这些方法中哪种是更快/更好的实践?或者,有没有比这两种方法更好的获取信息的方法?我使用的是Oracle数据库。

EN

回答 3

Stack Overflow用户

发布于 2018-07-26 14:24:41

数据库查询是一个相对昂贵的操作-你需要通过网络与另一个服务器通信,然后它可能需要访问它的磁盘,计算结果,返回给你,等等。你会想要尽可能减少这些。到目前为止,只有一个查询并查看其结果比拥有多个查询要好得多,除非你有一些致命的理由不这样做-这里似乎不是这样,至少从你共享的信息来看不是这样。

票数 2
EN

Stack Overflow用户

发布于 2018-07-26 14:25:54

排序答案是#2。您希望对数据库进行尽可能少的查询。#2如果我没记错的话,你将连接一个城市/人,然后创建一个对象。

更好的方法:使用JPA/Hibernate。即检查http://www.baeldung.com/hibernate-one-to-many

票数 0
EN

Stack Overflow用户

发布于 2018-07-27 05:28:25

答案#2在所有情况下都是最优的。

当您从一个城市更改到下一个城市时,您需要在Java中编写逻辑代码来区分。

或者,如果您使用的是MyBatis,则使用“集合”可以使解决方案变得非常简单。它们执行Java 数据库调用并检索您指定的整个树,包括多个级别的所有子列表。性能非常好,也很容易编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51532152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档