0
に参加しましょう私は、クエリのこの種に出くわした:クロスインナーよりもはるかに高速が仕事で
select distinct psv.pack_id from pack_store_variant psv, pack p
where p.id = psv.pack_id and p.store_id = 1 and psv.store_variant_id = 196;
は、私が検索のビットを行なったし、これは基本的に2つのデカルト積をしていselect from table1, table2
に新しいビーイングテーブル。私はこれが不必要にNxM行を作成していると思っていました。通常の結合を使用するだけで動作するはずです。だから私はこのクエリを書きました:私は比較をしたとき
SELECT DISTINCT pack_id from (SELECT pack_id, store_id, store_variant_id
FROM pack JOIN pack_store_variant ON pack.id = pack_store_variant.pack_id) as comb
where comb.store_id = 1 AND comb.store_variant_id = 196;
は驚くべきことに、最初のものは速く私より一桁でした。どういうふうに私の質問が吸い込まれますか?または、クロスジョイン/インナージョイントの違いを正しく理解していないのですか?
クエリでは、どこで1つのループで結合が行われますか? – hoodakaushal
@hoodakaushalはい。パフォーマンスはクロス結合より優れているはずですが、これは100%ではありません。 –
それはそうではないことが分かります。クエリーは私の方法よりも速いですが、クロス結合よりも一貫して高速ではありません - どちらも数ms以内ですが、どちらも常に高速です。私はそれをただのままにすることに決めました。 – hoodakaushal