3

我试图确定在 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
4

2 回答 2

1

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

V1 执行计划 在此处输入图像描述

V2 执行计划 在此处输入图像描述

于 2013-09-18T18:06:29.390 回答
1

只要没有外连接,结果集就没有区别。并且所有并非完全愚蠢的优化器都会将两个版本完全相同。

于 2013-09-18T17:43:02.830 回答