• <small id='WirE4'></small><noframes id='WirE4'>

  • <i id='WirE4'><tr id='WirE4'><dt id='WirE4'><q id='WirE4'><span id='WirE4'><b id='WirE4'><form id='WirE4'><ins id='WirE4'></ins><ul id='WirE4'></ul><sub id='WirE4'></sub></form><legend id='WirE4'></legend><bdo id='WirE4'><pre id='WirE4'><center id='WirE4'></center></pre></bdo></b><th id='WirE4'></th></span></q></dt></tr></i><div id='WirE4'><tfoot id='WirE4'></tfoot><dl id='WirE4'><fieldset id='WirE4'></fieldset></dl></div>
        <bdo id='WirE4'></bdo><ul id='WirE4'></ul>

      <tfoot id='WirE4'></tfoot>

      1. <legend id='WirE4'><style id='WirE4'><dir id='WirE4'><q id='WirE4'></q></dir></style></legend>
      2. 在 MySQL 查询中,为什么使用 join 而不是 where?

        时间:2023-08-18

          <small id='eej4y'></small><noframes id='eej4y'>

              <tbody id='eej4y'></tbody>
            <tfoot id='eej4y'></tfoot>
              <i id='eej4y'><tr id='eej4y'><dt id='eej4y'><q id='eej4y'><span id='eej4y'><b id='eej4y'><form id='eej4y'><ins id='eej4y'></ins><ul id='eej4y'></ul><sub id='eej4y'></sub></form><legend id='eej4y'></legend><bdo id='eej4y'><pre id='eej4y'><center id='eej4y'></center></pre></bdo></b><th id='eej4y'></th></span></q></dt></tr></i><div id='eej4y'><tfoot id='eej4y'></tfoot><dl id='eej4y'><fieldset id='eej4y'></fieldset></dl></div>
              • <bdo id='eej4y'></bdo><ul id='eej4y'></ul>
                <legend id='eej4y'><style id='eej4y'><dir id='eej4y'><q id='eej4y'></q></dir></style></legend>

                • 本文介绍了在 MySQL 查询中,为什么使用 join 而不是 where?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  好像把两个或多个表组合起来,我们可以使用join或where.一个比另一个有什么优势?

                  It seems like to combine two or more tables, we can either use join or where. What are the advantages of one over the other?

                  推荐答案

                  任何涉及多个表的查询都需要某种形式的关联来将表A"的结果链接到表B".这样做的传统 (ANSI-89) 方法是:

                  Any query involving more than one table requires some form of association to link the results from table "A" to table "B". The traditional (ANSI-89) means of doing this is to:

                  1. 在FROM子句中用逗号分隔的列表列出涉及的表
                  2. 在 WHERE 子句中写出表之间的关联

                  1. List the tables involved in a comma separated list in the FROM clause
                  2. Write the association between the tables in the WHERE clause

                  SELECT *
                    FROM TABLE_A a,
                         TABLE_B b
                   WHERE a.id = b.id
                  

                  这是使用 ANSI-92 JOIN 语法重写的查询:

                  Here's the query re-written using ANSI-92 JOIN syntax:

                  SELECT *
                    FROM TABLE_A a
                    JOIN TABLE_B b ON b.id = a.id
                  

                  从性能的角度来看:

                  <小时>

                  在支持(Oracle 9i+、PostgreSQL 7.2+、MySQL 3.23+、SQL Server 2000+)的情况下,使用任何一种语法都没有性能优势.优化器将它们视为相同的查询.但是更复杂的查询可以从使用 ANSI-92 语法中受益:

                  From a Performance Perspective:


                  Where supported (Oracle 9i+, PostgreSQL 7.2+, MySQL 3.23+, SQL Server 2000+), there is no performance benefit to using either syntax over the other. The optimizer sees them as the same query. But more complex queries can benefit from using ANSI-92 syntax:

                  • 能够控制JOIN顺序——扫描表的顺序
                  • 能够在加入之前对表应用过滤条件

                  使用 ANSI-92 JOIN 语法而不是 ANSI-89 的原因有很多:

                  There are numerous reasons to use ANSI-92 JOIN syntax over ANSI-89:

                  • 更具可读性,因为 JOIN 条件与 WHERE 子句分开
                  • 不太可能错过 JOIN 条件
                  • 对 INNER 以外的 JOIN 类型提供一致的语法支持,使查询易于在其他数据库上使用
                  • WHERE 子句仅用于过滤所连接表的笛卡尔积

                  ANSI-92 JOIN 语法是模式,而不是反模式:

                  ANSI-92 JOIN syntax is pattern, not anti-pattern:

                  • 查询的目的更明显;应用程序使用的列是明确的
                  • 它遵循尽可能使用严​​格类型的模块化规则.显式几乎普遍更好.

                  由于不熟悉和/或舒适,我认为继续使用 ANSI-89 WHERE 子句而不是 ANSI-92 JOIN 语法没有任何好处.有些人可能会抱怨 ANSI-92 语法更冗长,但这正是它明确的原因.越明确,越容易理解和维护.

                  Short of familiarity and/or comfort, I don't see any benefit to continuing to use the ANSI-89 WHERE clause instead of the ANSI-92 JOIN syntax. Some might complain that ANSI-92 syntax is more verbose, but that's what makes it explicit. The more explicit, the easier it is to understand and maintain.

                  这篇关于在 MySQL 查询中,为什么使用 join 而不是 where?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何获取 MySQL 的当前时区? 下一篇:MySQL 偏移无限行

                  相关文章

                  最新文章

                    <tfoot id='kegC2'></tfoot>
                  1. <i id='kegC2'><tr id='kegC2'><dt id='kegC2'><q id='kegC2'><span id='kegC2'><b id='kegC2'><form id='kegC2'><ins id='kegC2'></ins><ul id='kegC2'></ul><sub id='kegC2'></sub></form><legend id='kegC2'></legend><bdo id='kegC2'><pre id='kegC2'><center id='kegC2'></center></pre></bdo></b><th id='kegC2'></th></span></q></dt></tr></i><div id='kegC2'><tfoot id='kegC2'></tfoot><dl id='kegC2'><fieldset id='kegC2'></fieldset></dl></div>
                        <bdo id='kegC2'></bdo><ul id='kegC2'></ul>
                      <legend id='kegC2'><style id='kegC2'><dir id='kegC2'><q id='kegC2'></q></dir></style></legend>

                    1. <small id='kegC2'></small><noframes id='kegC2'>