PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zaawansowane indeksowanie obejmujące warunki OR-ed (pgsql)

W zależności od warunków logicznie niemożliwe może być użycie dowolnego indeksu do pomocy w złożonym warunku przy użyciu OR wyrażenia.

Podobnie jak MySQL, PostgreSQL 8.0 i wcześniejsze stany w ich dokumentacji indeksów :

W PostgreSQL 8.1 zostało to zmienione .

Jeśli jednak to nie pomoże, możesz użyć UNION rozwiązanie, które wypróbowałeś (jest to powszechne rozwiązanie dla użytkowników MySQL, które nadal ma ograniczenie jeden indeks na tabelę).

Powinieneś być w stanie zamówić wyniki UNION zapytanie, ale musisz użyć nawiasów, aby określić, że ORDER BY dotyczy wyniku UNION , a nie tylko do ostatniego podzapytania w łańcuchu.

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

Mam nadzieję, że to pomoże; Nie jestem ekspertem od optymalizatora PostgreSQL. Możesz spróbować przeszukać archiwa list mailingowych lub zapytać na kanale IRC .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL w celu znalezienia wiersza z określoną liczbą skojarzeń

  2. Jak przekonwertować parę szerokości i długości geograficznej na typ geograficzny PostGIS?

  3. Jak uporządkować dane w sqlalchemy według listy

  4. Pyspark:Usuń pusty znak UTF z ramki danych pyspark

  5. Data i czas w UTC - jak je przechowywać w postgresie?