我想知道什么是检索数据最有效的方法(对数据库来说是快速和较少的工作)。我有两张table:
用户
ID | NAME
1 | John
2 | Mike
3 | Jack
数据
USER_ID | DATA
2 | some_data_1
3 | some_data_2
我需要通过用户名获取值,据我所知,我有两个选择: select id from users where name ='some_name'
然后从 data
按id列出的表。
或 select id from users join data on users.id = data.user_id where user.name = 'some_name'
另外,我想需要注意的是:这些是具有数千行和很少更多列的实际表的示例,上面有一个索引 user_id
中的列 data
表中,我在下面使用jdbc驱动程序,这是一个网络调用,如果重要的话是postgresql。
升级。此外,任何研究或任何类型的论文/文件/演讲的链接都非常有趣
2条答案
按热度按时间2admgd591#
通常,您希望让数据库做尽可能多的工作。一般来说,数据库运行在更复杂的服务器上,已经有无数的人年致力于优化程序和使代码有效运行。
此外,发送到数据库的每个查询都有开销。在运行查询之前,需要对其进行分析和编译。每个查询也有来回的通信。因此,一个查询通常比两个好。
对您的问题的一般答案是使用一个查询,即
join
.在某些情况下,多个查询比一个查询具有更好的性能。但在您的情况下,您只需要查找一行或几行。数据库设计得很好
join
. 所以,使用单个查询。fv2wmkja2#
连接是更好的选择,因为它将在一个镜头给你的数据。
如果您的应用程序正在调用这两个查询,那么这将浪费两次资源(您的应用程序的资源、网络时间、db解析和其他内容),使用一个查询可以很容易地避免这种浪费。资源只能使用一次。
因此,最好使用一个查询而不是两个查询来实现相同的目的。
与…同行
JOIN
: