基于JOIN ON参数或WHERE参数限制SQL结果

时间:2013-09-18 17:37:52

标签: mysql sql performance

我正在尝试确定在JOIN ON子句或WHERE子句本身中使用MySQL查询中的选择参数是否有任何已知的好处。

我确信并且知道返回的结果是相同的,而在本地测试时,“查询时间”似乎几乎可以忽略不计,但想知道是否有任何专家意见。

这两个在后端是否存在差异?如果是,那么首选哪个?

V1

SELECT
  *
FROM users a
JOIN user_photos b ON (b.userid = a.userid)
WHERE
  a.userid = 12345
  AND b.photo_type = 1

或v2

SELECT
  *
FROM users a
JOIN user_photos b ON (b.userid = a.userid AND b.photo_type = 1)
WHERE
  a.userid = 12345

2 个答案:

答案 0 :(得分:1)

只要没有外部加入,结果集就没有区别。 所有不完全愚蠢的优化器都会对两个版本完全相同。

答案 1 :(得分:1)

两个查询都会提供相同的性能,并且会在相同的时间内执行。两者的执行计划相同

V1执行计划 enter image description here

V2执行计划 enter image description here