現在、ユーザーがサインアップ(またはゲストとして注文)したときにpostgresデータベースのcustomersテーブルを照会しています。 "新しいユーザー。 ユーザーは名前を変更することもできます。それらが実行されるとき、私たちは彼らのプライマリ名を変更しますが、古い名前をalt_fnameとalt_lnameフィールドに保持します。その結果、(ActiveRecordの中に)私たちのwhere句は、私は(fnameは、lnameの上など)いくつかのマルチカラムインデックスを追加したい物事をスピードアップするためにOR文がPostgresクエリの複数列インデックスにどのように影響するか
Customer.where(["(fname = :fname OR alt_fname = :fname) AND (lname = :lname OR alt_lname = :lname)", {fname: first_name, lname: last_name}])
ですが、私は知りませんクエリが単純なANDステートメントではなく、2つのORがANDで結合されている場合には、それらも使用されます。
'OR'sはインデックスの使用をかなり殺します。 –
@GordonLinoffはこれもポストレースでも当てはまりますか? https://www.postgresql.org/docs/9.2/static/indexes-bitmap-scans.html – user5613413