sql >> Database >  >> RDS >> PostgreSQL

Geavanceerde indexering met OR-ed voorwaarden (pgsql)

Afhankelijk van de voorwaarden kan het logischerwijs onmogelijk zijn om een ​​index te gebruiken om een ​​complexe voorwaarde te helpen met behulp van OR uitdrukkingen.

Net als MySQL, PostgreSQL 8.0 en eerdere staten in hun docs over indexen :

Met PostgreSQL 8.1 is dit gewijzigd .

Als dit echter niet helpt, kunt u de UNION . gebruiken oplossing die u hebt geprobeerd (dit is een veelgebruikte oplossing voor MySQL-gebruikers, die nog steeds een beperking van één index per tabel heeft).

U zou de resultaten van een UNION . moeten kunnen bestellen query, maar u moet haakjes gebruiken om aan te geven dat ORDER BY is van toepassing op het resultaat van de UNION , niet alleen naar de laatste subquery in de keten.

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

Ik hoop dat dit helpt; Ik ben geen expert op het gebied van de PostgreSQL-optimizer. Je zou kunnen proberen te zoeken in de mailinglijstarchieven , of vraag het op het IRC-kanaal .



  1. hoe kan ik de externe sleutel wijzigen?

  2. Psycopg2 voegt python-woordenboek in postgres-database in

  3. Zorg ervoor dat de cursor correct is geïnitialiseerd voordat u er gegevens van opent

  4. MySQL DISTINCT op een GROUP_CONCAT()