【发布时间】:2010-12-28 06:28:25
【问题描述】:
我有一个名为 orders 的表。订单上的一列是 customer_id
我有一个名为 customers 的表,有 10 个字段
如果我想建立一个订单对象数组并嵌入一个订单对象是一个客户对象,那么有两个选项,我有两个选择。
选项 1:
一个。首先查询订单表。 湾。遍历记录并查询人员表以获取人员的记录
这可能是这样的:
Select * from APplications
Select * from Customer where id = 1
Select * from Customer where id = 2
Select * from Customer where id = 3
Select * from Customer where id = etc . . .
选项 2:
一个。对所有字段进行连接
这是一个明显的 #2,因为您只执行一个查询而不是 1 + [numberOforders] 个查询(可能是数百个或更多)
这可能是这样的:
Select * from Applications a, Customers c
Innerjoin c.id = a.customerID
我的主要问题是,如果我有 10 个其他表不在订单表(类似于客户)中,而您在订单表中有 id。您是否应该执行一个查询来连接这 10 个表,或者在某些时候这样做效率低:
任何建议都会有所帮助.. 是否有任何优化以确保快速性能
【问题讨论】:
-
对不起,如果我的帖子不清楚。我的意思是,每个应用程序都会返回一行,对吧?
-
这里的大多数答案都非常模糊,是由甚至没有在 SQL 中处理过大数据的新手提出的。 (是的,用 SQL 处理大数据很愚蠢,但有时你别无选择)
-
我运行了一个基准测试并将结果发布到an article on Medium。我会在这里添加一个答案,但是already did it on another question,并且对多个问题发布相同的答案是frowned upon。
标签: sql database database-design query-optimization