如果您出于某种原因担心IN子句被运行两次(例如,如果子查询特别复杂并且优化器似乎没有利用缓存结果集的优势),则可以始终将IN子句替换为内部联接。
所以这:
FROM x
WHERE from_id IN (
_subquery_
)
OR
to_id IN (
_subquery_
)
变成这个:
FROM x
INNER JOIN (
_subquery_
) y ON y.value IN (x.from_id, x.to_id)
子句中的mysql语法
如果您出于某种原因担心IN子句被运行两次(例如,如果子查询特别复杂并且优化器似乎没有利用缓存结果集的优势),则可以始终将IN子句替换为内部联接。
所以这:
FROM x
WHERE from_id IN (
_subquery_
)
OR
to_id IN (
_subquery_
)
变成这个:
FROM x
INNER JOIN (
_subquery_
) y ON y.value IN (x.from_id, x.to_id)