sql >> Database teknologi >  >> RDS >> PostgreSQL

Avanceret indeksering, der involverer OR-ed-betingelser (pgsql)

Afhængigt af betingelserne kan det være logisk umuligt at bruge et hvilket som helst indeks til at hjælpe en kompleks tilstand ved hjælp af OR udtryk.

Ligesom MySQL, PostgreSQL 8.0 og tidligere tilstande i deres dokumenter om indekser :

Med PostgreSQL 8.1 er dette ændret .

Men hvis dette ikke hjælper, kan du bruge UNION løsning, du prøvede (dette er en almindelig løsning for MySQL-brugere, som fortsat har en begrænsning på ét indeks pr. bord).

Du bør være i stand til at bestille resultaterne af en UNION forespørgsel, men du skal bruge parenteser for at angive, at ORDER BY gælder for resultatet af UNION , ikke kun til den sidste underforespørgsel i kæden.

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

Jeg håber det hjælper; Jeg er ikke ekspert i PostgreSQL optimizer. Du kan prøve at søge i mailinglistearkiverne , eller spørg på IRC-kanalen .



  1. INSERT-sætningen er i konflikt med FOREIGN KEY-begrænsningen - SQL Server

  2. Sådan får du værdi fra en tabelkolonne, når der findes to kolonner af samme navn i en sql join

  3. SQL-forespørgsel Vælg første række 1 række fra flere rækker/gruppe

  4. Ydelse:Underforespørgsel eller deltagelse