:最初の変形では追加のAND項を含むSELECTは、それがない場合よりもどのように多くの行を生成できますか?私はこのようなクエリ実行しています
SELECT distinct me.*
FROM me
LEFT JOIN has_things ON has_things.me_id = me.id
LEFT JOIN has_refs ON has_refs.thing_id = has_things.thing_id
WHERE
has_refs.ref_id = 456
AND me.id=123;
を、私は最後の行AND me.id = 123
を省略し、第二の変形で、私はその行を含めると、1行を取得しながら、0行を取得します。
最後の行がAND me.id >= 123
である別の変形では、私は0行を得る。
私はpsql
を使用してデータベースに問い合わせています。
私は何が欠けていますか?これをどのように修正できますか? 私はAND
の条件で一致の数を減らすことができると思った。
このようなPostgreSQLのバグを知っている人は、行が消えたり消えたり、バグのチケットなどにリンクしている可能性がありますか?インデックスは、問題を修正し再作成
How can PDO not return a row which pg_query() does?
どのデータ型が 'me.id'ですか?これを再現するための完全なテストセットアップを提供できますか?実行計画はその列の索引参照を表示しますか?はいの場合は、索引ヘルプを再作成しますか? –
LEFT JOINとWHEREの残りの部分で行われている処理と組み合わせて使用される可能性があります。 –
'me.id'は' serial NOT NULL'タイプです。負荷が低い夜間にインデックスを再作成します。実際のクエリでクエリを更新しましたが、同じ結果を生成しながら最小化することができました。私にとって、「JOIN」はまったく不利に見えます。 – Archimedix