【问题标题】:Which of the following SQL queries would be faster? A join on two tables or successive queries?以下哪个 SQL 查询会更快?连接两个表或连续查询?
【发布时间】:2011-01-21 12:20:20
【问题描述】:

我这里有两张桌子:

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

USERS:
ID| NAME|....

在哪里ITEMS.OWNER = USERS.ID

我列出了这些物品及其各自所有者的姓名。为此,我可以在两个表上使用连接,或者我可以选择所有项目并循环通过它们进行 sql 查询以检索该项目所有者的元组。就是这样:

1 条带有 JOIN 的 sql 相对 1x20 单表 sql 查询

就速度而言,哪种方法更适合? 谢谢

【问题讨论】:

    标签: php sql mysql database-optimization


    【解决方案1】:

    当然JOIN 会更快。

    进行20 查询将意味着:

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

    【讨论】:

      【解决方案2】:

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

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

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

      祝你好运!

      【讨论】:

      • 我不同意“比你聪明”部分(嗯)——他们只是更了解自己的内部安排。但我同意更少的查询 = 更好的部分。
      • 取决于“智能”的定义。我的意思是:你可能不太了解数据库引擎的内部安排;-)
      【解决方案3】:

      执行连接会更快,也是一种更好的做法

      【讨论】:

        【解决方案4】:

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

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

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

        没有

        【讨论】:

          猜你喜欢
          • 2016-05-27
          • 2017-07-05
          • 1970-01-01
          • 2020-11-10
          • 1970-01-01
          • 2013-09-23
          • 1970-01-01
          • 2023-03-27
          相关资源
          最近更新 更多