0

結合内に複雑なネストされたクエリがありますが、結合でクエリを繰り返す代わりに、そのクエリに一致する複数の列を見つけることは可能ですか?すなわち:

select * from 
A left join B on a.xid=b.xid and 
(a.userid or b.userid) in (select userid from A where..) 

^^^ネストされたクエリを複製したくない...

親クエリのいくつかの列に一致するネストされたクエリがあります(上記の例を参照)。簡単な方法は、ネストされたクエリを数回複製することです。すなわち-

select * from A
left join B
  on a.xid=b.xid
  and a.userid in (select userid from ...)
  and b.userid in (Select userid from ....)

ただし、サブクエリは少し複雑なので、mysqlで2回実行するのではなく、1回だけ実行して、いくつかの親クエリ列と照合します。

4

1 に答える 1

0

サブクエリが正しく機能していて、クエリキャッシュがオンになっている場合は、パフォーマンスについて心配する必要はありません。複雑すぎるという質問の場合は、このクエリにprocを使用できます。subの結果を一時テーブルに入れて結合します。

これにアプローチする方法はたくさんあります。

于 2012-05-01T14:55:07.003 に答える