これを達成する方法を誰かが指摘できるかどうか疑問に思っていました。MYSQLの結果を保存し、別のクエリでIN文として使用する
私はかなり重いクエリを持っています(主に、毎日何千もの購入で過去10年間のレコードの量が原因です)。
はとにかくそれはこの場合には、このような何か(複数が関与ジョイン)
SELECT customerNumber from purchaseOrder where somestatus = someStatus;
複数ある加入したが、私は顧客数が、彼らは以来、関係を介して接続していないされているかを知りたいでしょう簡素化注文は、登録されていない人が一度だけ買うこともできます。
今、このクエリは約950レコードになります。ロードには最大30秒かかります(これは問題ありません)。
は、しかし、今、私は再び別のクエリ例えばで結果を使用する。:
SELECT * from registeredUsers wherestatus
IN(Some values which mean the account is not active)
and customerNumber in (results from query 1).
私がIN部分に番号を貼り付けるときに、この2番目のクエリはかなり速いです。しかし、私は動的に動作するようにしたいと思っています。なぜなら、異なるケースに対してクエリ2のいくつかのバリエーションを作成する必要があるからです。
これはオプションですか?
私は結果を変数に入れようとしましたが、 "Subquery returns multiple rows"エラーが発生します。
これを行う他の方法はありますか?一時的なテーブルを作成しようと思っていましたが、それはうまくいくでしょうか?
http://stackoverflow.com/questions/13116042/how-toにインデックスを持っていない場合は、一時テーブルからインデックスをスキップすることができます-pass-a-of-a-in-clause – Ramesh
これはできません。しかし、ありがとう –