代码之家  ›  专栏  ›  技术社区  ›  Jukurrpa

MySQL如何处理WHERE测试?

  •  0
  • Jukurrpa  · 技术社区  · 14 年前

    当我根据GET参数编写一个php页面来构建一个MySQL请求时,我想知道MySQL是否对请求中的WHERE测试进行了任何形式的重组,或者是否只接受它们。

    例如,如果我执行此请求:

    SELECT * FROM `table` t WHERE (SELECT `some_value` FROM `another_table` u WHERE `t.id` = `u.id` LIMIT 1) = 10 AND `a_boolean` = 1;
    

    显然,第二个测试速度更快,首先执行它会过滤很多条目,所以对另一个测试要做的子请求会更少。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Sjoerd    14 年前

    是的,MySQL(和任何SQL服务器)在开始工作之前都会制定一个计划,并尝试采取尽可能快的方法。 Explain 提供一些有关MySQL如何处理查询的信息。

        2
  •  1
  •   raveren    14 年前

    你可以用 EXPLAIN (documentation)