0

[PM_text][PM_bact ] などの2 つのテーブルを含む mysql データベースがあります。2 つのテーブルには、共通のデータ列が 1 つあります。私の意図は、2 番目のテーブルの共通データ列への一致を使用して、最初のテーブルから情報を取得することです。私は最初にこれにネストされたクエリを使用しましたが、問題なく機能していました。突然、それが決定的に実行されなくなったことに気づきました。代わりに「結合」を使用して、それがさらに最適化されるかどうかを確認したいと思います。

これは私の最初のクエリです:

SELECT pmid, year, title, pages FROM PM_text WHERE pmid IN (PM_bact から pmd_id を選択 WHERE bact1 LIKE ? AND bact2 LIKE ? AND associat LIKE ?);

しかし、私はそれを次のように変更するつもりです:

SELECT DISTINCT PM_text.pmid, PM_text.year, PM_text.title, PM_text.pages FROM PM_text, PM_bact WHERE PM_text.pmid = PM_bact.pmd_id AND PM_bact.bact1 LIKE ? そして PM_bact.bact2 のように? そして PM_bact.associat LIKE ? ;

2 番目のテーブルの「bact1」、「bact2」、および「associat」と一致することを確認する必要があり、クエリで「AND」を繰り返し使用すると最適化に影響する可能性があることを懸念しています。

これを行うためのより良い方法があると確信しており、この主題に慣れていないので、あなたが提供できる助けをいただければ幸いです. どうもありがとう。

4

1 に答える 1

0

2番目のクエリは問題ありません。多くのステートメントに問題はありません。pmid列とpmd_id列にインデックスがあることを確認してください。これにより、優れたパフォーマンスが得られるはずです。

on句を使用して内部結合を完全にスペルアウトして書き出すこともできますが、クエリは現在と同じように実行されます。

于 2012-08-21T16:28:29.753 に答える