条件によっては、OR
を使用して複雑な条件を支援するためにインデックスを使用することが論理的に不可能な場合があります。 式。
MySQLと同様に、PostgreSQL8.0以前は
PostgreSQL 8.1では、これは変更 されています。 。
ただし、これで問題が解決しない場合は、UNION
を使用できます。 試したソリューション(これはMySQLユーザーにとって一般的なソリューションであり、テーブルごとに1つのインデックスが引き続き制限されます)。
UNION
の結果を注文できるはずです クエリを実行しますが、かっこを使用してORDER BY
を指定する必要があります UNION
の結果に適用されます 、チェーンの最後のサブクエリだけではありません。
(SELECT ... )
UNION
(SELECT ... )
UNION
(SELECT ... )
ORDER BY columnname;
これがお役に立てば幸いです。私はPostgreSQLオプティマイザーの専門家ではありません。 メーリングリストアーカイブ を検索してみてください。 、またはIRCチャネル で質問する 。