性能明智:使用内部联接或打开新连接/另一个查询是否更好

时间:2013-02-16 10:26:28

标签: mysql sql jdbc

我有2张这样的表:

表A:

article_id | attribute_id
1          | 5
2          | 6

表B:

attribute_id | attribute_name
5            | foo
6            | bar

我想得到结果:

article_id | attribute_id | attribute_name
1          | 5            | foo

我有2个解决方案: 解决方案A:  要么像这样使用内连接:

SELECT TableA.article_id, TableB.*
FROM TableA
INNER JOIN TableB ON TableA.attribute_id = TableB.attribute_id
WHERE TableA.article_id = 1

或解决方案B,在我的Java程序中:

  • 首先在表A中查询。
  • 打开新连接,并使用第一个查询中的“article_id”在表B中进行查询。

我想知道性能明智,哪种解决方案更好。 请注意,表A和B将收到大量的点击量。另外,请注意,我正在使用mysql和tomcat。

3 个答案:

答案 0 :(得分:4)

这几乎总是“尝试使用您的真实数据,看看哪个更好”。

general 中,我希望连接更有效(更多)。但同样,您必须使用 数据和 设置进行尝试。

答案 1 :(得分:1)

连接速度更快,因为新连接有一些开销。

答案 2 :(得分:0)

简短回答:加入。

答案很长:如果你非常关注性能,我会说基于联接创建一个索引视图,并选择它。