私の問題はこれです:MySQLのサブクエリは悪いパフォーマンスを登録しよう
select * from
(
select * from barcodesA
UNION ALL
select * from barcodesB
)
as barcodesTOTAL, boxes
where barcodesTotal.code=boxes.code;
表barcodesAは4000のエントリ 表barcodesB 表ボックスは180.000エントリ
それはproccessする30秒かかり似ている4000個のエントリを持っているがありますクエリ。
別の問題クエリ:
select * from
viewBarcodesTotal, boxes
where barcodesTotal.code=boxes.code;
viewBarcodesTotalは、両方のバーコードテーブルからのUNION ALLを含んでいます。それはまた永遠にかかります。
一方
、 select * from barcodesA , boxes where barcodesA.code=boxes.code
UNION ALL
select * from barcodesB , boxes where barcodesB.code=boxes.code
この1つは< 1secondをとります。
質問は明らかにWHY?、私のコードは盗まれていますか? mysqlは盗まれていますか?
私はmysqlへのアクセスから移行する必要があり、最初のオプションが盗まれた場合は、すべてのコードを書き直す必要があります。
簡潔に言えば、サブクエリは遅く、可能な場合は避けてください。 – Polynomial
クエリでEXPLAINを実行し、その出力を質問に含めることができます。それ以外の場合は、コードフィールドにインデックスがありますか?あなたは本当にすべてのデータを取得する必要がありますか、またはサブセット(条件に基づいて)で十分でしょうか? –