我正在尝试确定在JOIN ON子句或WHERE子句本身中使用MySQL查询中的选择参数是否有任何已知的好处。
我确信并且知道返回的结果是相同的,而在本地测试时,“查询时间”似乎几乎可以忽略不计,但想知道是否有任何专家意见。
这两个在后端是否存在差异?如果是,那么首选哪个?
SELECT
*
FROM users a
JOIN user_photos b ON (b.userid = a.userid)
WHERE
a.userid = 12345
AND b.photo_type = 1
SELECT
*
FROM users a
JOIN user_photos b ON (b.userid = a.userid AND b.photo_type = 1)
WHERE
a.userid = 12345
答案 0 :(得分:1)
只要没有外部加入,结果集就没有区别。 所有不完全愚蠢的优化器都会对两个版本完全相同。
答案 1 :(得分:1)
两个查询都会提供相同的性能,并且会在相同的时间内执行。两者的执行计划相同
V1执行计划
V2执行计划