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

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