【发布时间】:2017-11-30 11:16:45
【问题描述】:
我有两张桌子 table : cost1_id 不为空且 cost2_id 可以为空的产品
id | cost1_id | cost2_id
1 | 1 | 2
2 | 3 |
表格:成本
id | value | currency
1 | 15 | EUR
2 | 20 | USD
3 | 100 | TND
我想在不使用 join 的情况下得到这个结果(我宁愿使用 UNION,因为我有很大的数据库)
product_id | cost1_value | cost1_currency | cost2_value | cost2_currency
1 | 15 | EUR | 20 | USD
2 | 100 | TND | |
【问题讨论】:
-
“我宁愿与 UNION 合作,因为我有大型数据库”这是什么意思? Join 对大型数据库没用?
-
JOINs 是关系数据库的基本组成部分... -
我用JOIN处理大表,性能明显下降,但是当我切换到union时,性能得到了提升(我的意思是响应时间更快)
-
那么您没有正确的索引,或者您的连接混淆了 RDBMS 使用索引的能力。我提供了两个建议,一个使用单个连接,(但使用
IN()会减慢速度),另一个仅使用“传统”连接。我怀疑你不想使用的那个是最快的。至于你遇到的JOIN慢的情况,你已经使用了UNION来加快速度,在另一个问题中给出一个具体的例子并问Why is the non-join版本更快吗? (请记住同时包含 SQL 和示例数据。) -
请解释“不使用联接(我宁愿使用 UNION,因为我有大型数据库)”。因为它反映了严重的误解。一方面,他们做不同的事情。 UNION 返回某事物或其他事物的行。 JOIN 返回某事和其他事如此的行。
标签: sql postgresql foreign-keys