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

postgres tylko przy użyciu posortowanego indeksu do odpytywania tabeli rekordów 5m

Zmień zapytanie na

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

i użyj tego indeksu:

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

Wyjaśnienie:OR to problem z wydajnością . Przepisując go jako leksykograficzne porównanie par, pozbywasz się OR , a proste skanowanie indeksu skutecznie odnajduje wiersze. PostgreSQL nie jest już kuszony do używania indeksu, który obsługuje 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. Capistrano z PostgreSQL, błąd:dostęp do bazy danych mają inni użytkownicy

  2. Postgresql nie pyta o hasło

  3. Dlaczego domyślna wartość kolumny sqlalchemy nie działa?

  4. Konwertować interwał na mikrosekundy jako typ liczby w PostgreSQL?

  5. jak wybrać wszystkie rekordy zawierające określone wartości z pola postgres json zawierającego tablicę