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

Dlaczego PostgreSQL wykonuje sekwencyjne skanowanie indeksowanej kolumny?

Jeśli SELECT zwraca więcej niż około 5-10% wszystkich wierszy w tabeli, skanowanie sekwencyjne jest znacznie szybsze niż skanowanie indeksu.

Dzieje się tak, ponieważ skanowanie indeksu wymaga kilka Operacje we/wy dla każdego wiersza (wyszukaj wiersz w indeksie, a następnie pobierz wiersz ze sterty). Podczas gdy skanowanie sekwencyjne wymaga tylko jednego IO dla każdego wiersza – lub nawet mniej, ponieważ blok (strona) na dysku zawiera więcej niż jeden wiersz, więc więcej niż jeden wiersz można pobrać za pomocą jednej operacji IO.

Btw:dotyczy to również innych DBMS - niektóre optymalizacje, takie jak "skanowanie tylko z indeksem" na bok (ale dla SELECT * jest bardzo mało prawdopodobne, aby DBMS wybrał "skanowanie tylko z indeksem")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Automatyzacja Barmana z Puppet:it2ndq/barman (część druga)

  2. Błąd połączenia z Postgresem w Spring Boot

  3. Usuń rodzica, jeśli nie odwołuje się do niego żadne inne dziecko

  4. Jak obracać logi PgBouncera w systemie Linux/Windows?

  5. Szkolenie PostgreSQL dla MySQLerów