この質問は MySQL に固有のものですが、この回答が一般的な SQL エンジンに当てはまるかどうかはわかりません。
また、これは構文クエリではないため、簡略化/明確化のために疑似 SQL を使用しています。
C[1]..C[M] が (AND または OR で区切られた) 基準のセットであり、Q[1]..Q[N] が別のセット (OR で区切られた) であるとします。C[1]...C[M] を使用してテーブルをフィルタリングし、このフィルタリングされたテーブルから、Q[1]...Q[N] に一致するすべての行が必要です。
私がするなら:
SELECT ... FROM ... WHERE (C[1]...C[M]) AND (Q[1]...Q[N])
C[1]...C[M] が 1 回だけ検出され、各 Q[i] がこのキャッシュされた結果に対して実行されるように、これは自動的に最適化されますか? そうでない場合は、次のようにクエリを 2 つに分割する必要があります。
INSERT INTO TEMP ... SELECT ... FROM ... WHERE C[1]...C[N]
SELECT ... FROM TEMP WHERE Q[1]...Q[N]