PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Разширено индексиране, включващо OR-ed условия (pgsql)

В зависимост от условията, може да е логически невъзможно да се използва който и да е индекс, за да се помогне на сложно условие, като се използва OR изрази.

Подобно на MySQL, PostgreSQL 8.0 и по-ранни версии посочват в своите документи за индекси :

С PostgreSQL 8.1 това е променено .

Ако обаче това не помогне, можете да използвате UNION решение, което сте опитали (това е често срещано решение за потребителите на MySQL, което продължава да има ограничение от един индекс на таблица).

Трябва да можете да поръчате резултатите от UNION заявка, но трябва да използвате скоби, за да посочите, че това ORDER BY важи за резултата от UNION , а не само до последната подзаявка във веригата.

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

Надявам се това да помогне; Не съм експерт по оптимизатора на PostgreSQL. Може да опитате да потърсите в архивите на пощенските списъци , или попитайте в 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. Намерете нови записи за всеки от последните n месеца в PostgreSQL

  2. Рекурсивна заявка със сума в Postgres

  3. postgresql timestamp към std::chrono стойност

  4. Грешка при компилация на Dokku - django.core.exceptions.ImproperlyConfigured:Грешка при зареждане на модул psycopg2:Няма модул с име 'psycopg2'

  5. docker-compose up &&docker-compose build:грешка с PostgreSQL