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

postgres използва само сортиран индекс за запитване към таблица с 5m записи

Променете заявката на

WHERE NOT emails."$$meta.deleted" = FALSE
  AND (emails."$$meta.created", emails.key) >
      ('2018-02-13T14:30:35.679075Z', '8c0a3151-bf17-490f-8124-d93f7482624f')

и използвайте този индекс:

CREATE INDEX ON emails ("$$meta.created", key)
   WHERE NOT emails."$$meta.deleted";

Обяснение:OR е проблем с производителността . Като го пренапишете като лексикографско сравнение на двойки, вие се отървавате от OR , а просто сканиране на индекс намира редовете ефективно. PostgreSQL вече не се изкушава да използва индекса, който поддържа ORDER BY .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Хибернация, Postgres и тип масив

  2. Защо е най-добре да съхранявате телефонен номер като низ спрямо цяло число?

  3. Потокът, извлечен от Postgres, като jOOQ не връща резултати от класа

  4. Как да опресня всички материализирани изгледи в Postgresql 9.3 наведнъж?

  5. Нечувствителни ли са имената на функциите в PostgreSQL?