PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Indexation avancée impliquant des conditions OR-ed (pgsql)

Selon les conditions, il peut être logiquement impossible d'utiliser un index pour aider une condition complexe en utilisant OR expressions.

Comme MySQL, PostgreSQL 8.0 et les états antérieurs dans leur docs sur les index :

Avec PostgreSQL 8.1, cela a changé .

Cependant, si cela ne vous aide pas, vous pouvez utiliser le UNION solution que vous avez essayée (il s'agit d'une solution courante pour les utilisateurs de MySQL, qui continue d'avoir une limitation d'un index par table).

Vous devriez pouvoir commander les résultats d'un UNION requête, mais vous devez utiliser des parenthèses pour spécifier que ORDER BY s'applique au résultat de l'UNION , pas simplement à la dernière sous-requête de la chaîne.

(SELECT ... )
UNION
(SELECT ... )
UNION
(SELECT ... )
ORDER BY columnname;

J'espère que ça aide; Je ne suis pas un expert de l'optimiseur PostgreSQL. Vous pouvez essayer de chercher dans les archives de la liste de diffusion , ou en demandant sur le canal IRC .