sql >> Databáze >  >> RDS >> PostgreSQL

Dotazový plán postgresu s indexy

Tento plán:

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)

V podstatě znamená:

  1. Použití indexu Designation_place_name
  2. Najděte řádky, které odpovídají vztahu podmínky indexu ='Manager'
  3. Ponechejte pouze řádky, které odpovídají kritériím timeOfJoining

Během kroku 2 se ke stránkám disku přistupuje „náhodně“, nikoli sekvenčně, což znamená, že index obsahuje adresy odpovídajících řádků na disku a Postgres tyto adresy navštěvuje v pořadí uvedeném indexem. (Může to být nákladné, mimo jiné. Někdy se plánovač rozhodne, že bude levnější jen přečíst celou tabulku (sekv. skenování) nebo dávkové načítání všech řádků na stránce, přičemž ignoruje pořadí indikované indexem (skenování indexu bitmapy).)

Poznámka:V tomto dotazu nejsou žádná (tabulková) spojení. Kdyby tam byl jeden, viděli byste další úrovně odsazení. Přečtěte si je od nejvíce odsazených po nejméně odsazené.



  1. PL/SQL přiřazuje výsledky dotazu CLOB

  2. Jak importovat a exportovat soubory CSV pomocí PHP a MySQL

  3. Iterujte tabulku, proveďte výpočet na každém řádku

  4. Jak vyvolat SELECT přes DBLINK přes DBLINK?