mysql - 在其中的条件和条件

时间:2013-05-23 09:46:11

标签: mysql sql performance join where

我无法找到明确的答案,而且我的测试还没有结果:

如果我在连接中的表中有一列必须等于(或与另一种关系)常量,那么将条件设置为ON会更快吗?或者在WHERE的最后?

示例:

    SELECT * FROM `" . BLABLA . "` as `s`
    JOIN `" . BLABLABLA . "` AS `sDet` ON (`sDet`.`a` > '" . $R['a'] . "'
        AND '" . $R['b'] . "' BETWEEN `sDet`.`c` AND `sDet`.`d`
        AND `s`.`id` = `sDet`.`idDet`
    )
    WHERE `s`.`f` = 'whatever'

或者

    SELECT * FROM `" . BLABLA . "` as `s`
    JOIN `" . BLABLABLA . "` AS `sDet` ON (`s`.`id` = `sDet`.`idDet`)
    WHERE `s`.`f` = 'whatever'
        AND '" . $R['b'] . "' BETWEEN `sDet`.`c` AND `sDet`.`d`
        AND `s`.`id` = `sDet`.`idDet`

我在想第一个版本应该更快,但我不确定。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不太清楚什么是更快,但请记住,where和on子句之间的条件并不总是可以互换的。

内部联接
在INNER JOIN的情况下,他们是可以互换的

外部加入
在OUTER JOIN的情况下,它们不一定是可互换的。这取决于条件所依赖的连接的哪一侧