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

Zapytanie Plan postgresu z indeksami

Ten plan:

Index Scan using Designation_place_name on myTable  (cost=0.00..67701.36 rows=22043 width=27) (actual time=0.061..3.796 rows=3376 loops=1)
   Index Cond: ((relation)::text = 'Manager'::text)
   Filter: (timeOfJoining > '1930-10-10 00:00:00+05:53:20'::timestamp with time zone)
 Total runtime: 4.082 ms
(4 rows)

Zasadniczo oznacza:

  1. Korzystanie z indeksu nazwy miejsca_nazwa_miejsca
  2. Znajdź wiersze pasujące do relacji warunku indeksu =„Menedżer”
  3. Zachowaj tylko wiersze, które spełniają kryteria timeOfJoining

Podczas kroku 2 strony dysku są dostępne „losowo”, a nie sekwencyjnie, co oznacza, że ​​indeks zawiera adres pasujących wierszy na dysku, a Postgres odwiedza te adresy w kolejności wskazanej przez indeks. (Może to być kosztowne, przy okazji. Czasami planista zdecyduje, że taniej będzie po prostu przeczytać całą tabelę (skanowanie sekwencyjne) lub wsadowe pobrać wszystkie wiersze na stronie, ignorując kolejność wskazaną przez indeks (skanowanie indeksu mapy bitowej).

Uwaga:w tym zapytaniu nie ma złączeń (tabeli). Gdyby był taki, zobaczyłbyś dodatkowe poziomy wcięć. Przeczytaj je od największego do najmniejszego wcięcia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utrzymywanie postgresów całkowicie w pamięci

  2. Jak działa Random() w PostgreSQL

  3. Pobierz ścieżki z bazy danych punktów w sql

  4. Najlepsze praktyki tworzenia zapytań SQL SELECT podczas obsługi potencjalnych niezdefiniowanych wartości

  5. Jeden-do-wielu-do-jednego z atrybutami Forma z Symfony 3 / Doctrine