sql >> Databasteknik >  >> RDS >> PostgreSQL

Avancerad indexering som involverar ELLER-ed-villkor (pgsql)

Beroende på förhållandena kan det vara logiskt omöjligt att använda något index för att hjälpa ett komplext tillstånd med OR uttryck.

Liksom MySQL, PostgreSQL 8.0 och tidigare tillstånd i deras dokument om index :

Med PostgreSQL 8.1 har detta ändrats .

Men om detta inte hjälper kan du använda UNION lösning du försökte (detta är en vanlig lösning för MySQL-användare, som fortsätter att ha en begränsning av ett index per tabell).

Du bör kunna beställa resultaten av en UNION fråga, men du måste använda parenteser för att ange att ORDER BY gäller resultatet av UNION , inte bara till den sista underfrågan i kedjan.

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

Jag hoppas det här hjälper; Jag är ingen expert på PostgreSQL-optimeraren. Du kan prova att söka i e-postlistarkiven , eller fråga på IRC-kanalen .



  1. Använd som '%' och matcha NULL-värden med NUMBER kolumner

  2. Yii INFOGA ... PÅ DUBLIKAT UPPDATERING

  3. Hur man hittar tabeller som innehåller en specifik kolumn i SQL Server

  4. PHP, MySQL, PDO-transaktioner - Stoppar koden inuti försöksblocket vid commit()?