以下哪个SQL查询会更快?连接两个表还是连续查询?

时间:2011-01-21 12:20:21

标签: php sql mysql database-optimization

我这里有两张桌子:

ITEMS
ID| DETAILS| .....| OWNER

USERS:
ID| NAME|....

ITEMS.OWNER = USERS.ID

我列出了各自所有者名称的项目。为此,我可以在两个表上使用连接,或者我可以选择所有ITEMS并循环遍历它们进行sql查询以检索该itmes所有者的元组。那就像:

带有JOIN的1个sql 与 1x20单表sql查询

在速度方面哪个更好? 感谢

4 个答案:

答案 0 :(得分:6)

当然JOIN会更快。

进行20次查询意味着:

  • 解析他们20
  • 使20索引寻求在items
  • 上找到索引范围的开头
  • 返回20个记录集(每个记录集都有自己的元数据)。

答案 1 :(得分:3)

每个查询都有开销。如果你可以用一个查询做某事,那么(几乎)总是更好地用一个查询来做。大多数数据库引擎都比你聪明。即使以某种方式拆分查询更好,数据库也会找到自己。

开销的一个例子:如果你执行100次查询,你的应用程序和你的网络服务器之间会有更多的流量。

一般情况下,如果您真的想了解一些有关性能的信息,请对各种方法进行基准测试,测量您感兴趣的参数,并根据becnhmark的结果做出决定。

祝你好运!

答案 2 :(得分:2)

执行连接将更快,更好的做法

答案 3 :(得分:0)

我加入比在父表中为每个记录对子表执行另一个查询要快得多。

您还可以在SQL中启用性能数据,以便自己查看结果。

http://wraithnath.blogspot.com/2011/01/getting-performance-data-from-sql.html

<磷>氮