0

結果を出すのに時間がかかりすぎるMySqlクエリ

Select pty_code from sis.tblBf a where a.BFno 
       not in (select b.BNo from sislatest.tbltransaction b)

注:私は2つの異なるデータベースを比較して違いを得ています。

Select A.pty_code from DataBase1.TableName A 
       where A.BFno NOT IN (SELECT B.BNo From DataBase2.TableName B)
4

2 に答える 2

1

おそらくインデックスの問題でしょうか?ここで、mysql の Explain 構文が役に立ちます。

http://dev.mysql.com/doc/refman/5.0/en/using-explain.html

他に役立つ可能性があるのは、「テーブルの最適化」、または「テーブルの分析」で矛盾をチェックすることです。

于 2012-04-04T07:08:31.857 に答える
1

特に「not in」句で副選択を使用すると、遅くなります。where句で「is null」を使用して左外部結合に書き直すことをお勧めします。

SELECT a.pty_code from sis.tblBf a LEFT JOIN sislatest.tbltransaction b on b.BNo = a.BFno WHERE b.BNo IS NULL

それはうまくいくと思いますが、テストするデータベースがなければ、盲目的に書いています。

それでも遅い場合は、b.BNo と A.BFNo にインデックスがあることを確認します。

于 2012-04-04T07:26:51.817 に答える