私は質問が異なるので、私が尋ねる他の質問を拡張しようとしています。私が持っている2表:クエリー間の比較行の比較
article_en:
ID TITLE CONTENT HOME_POSITION
1 article1 blablablabla 1
2 article2 blablablabla 2
3 article3 blablablabla 3
4 article4 blablablabla 4
5 article5 blablablabla 5
6 article6 blablablabla 6
7 article7 blablablabla 7
article_nl:私はすでに外部キーとして追加されていないarticle_enからの最新記事を取得するには、このクエリを実行
ID TITLE CONTENT ENGLISH_ID HOME_POSITION
1 article1 blablablabla 5 1
2 article1 blablablabla 7 2
article_nlで
SELECT *
FROM article_en
LEFT JOIN article_nl
ON article_en.id != article_nl.english_id
ORDER BY article_en.home_position;
このクエリは動作しますが、問題は、私は各テーブルに複数の25.000行を持っているということですので、クエリが本当に遅いです(25秒以上)ので、私は最後の100件の記事を比較するには、このクエリを制限したいです両方のテーブルの間。最後の100件の記事に外国語として追加されていない記事が最後の100件の記事にある場合は、
SELECT *
FROM article_en
LEFT JOIN article_nl
ON article_en.id != article_nl.english_id
ORDER BY article_en.home_position DESC limit 100;
それは役立ちますが、その動作していない:として
は、私は別の戦略を試してみました。たぶん私は戦略を変更して、他の種類のクエリで試してみて、左結合を使わないでください。
を好むよう、あなたの100件のレコードを制限/ TOPすることができますが、単純にSELECT TOP 100をやってみましたか? – Magisch
サブクエリを使用してみてください。結合の代わりに、他のテーブルからIDを選択し、INクエリを使用してwhereを設定します。 – Rupal
ありがとう、あなたは正しい方向に私を入れた。私は左側の結合が私の最善の選択ではなく、私は左側の外部結合に変わり、今は本当に高速です。 SELECT * LEFT OUTERはarticle_en.id = article_nl.english_id article_nl.id *が参加100 –