sql >> Databasteknik >  >> RDS >> PostgreSQL

Fråga Plan av postgres med index

Denna 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)

Betyder i princip:

  1. Använda indexet Designation_place_name
  2. Hitta rader som passar indexvillkorsrelationen ='Hanterare'
  3. Behåll endast rader som matchar timeOfJoining-kriterierna

Under steg 2 nås disksidor "slumpmässigt", snarare än sekventiellt, vilket vill säga att indexet innehåller adressen för matchande rader på disken, och Postgres besöker dessa adresser i den ordning som anges av indexet. (Detta kan vara dyrt, btw. Ibland kommer planeraren att bestämma sig för att det är billigare att bara läsa hela tabellen (seq scan) eller batchhämta alla rader på en sida samtidigt som den ignorerar ordningen som anges av indexet (bitmap index scan).)

Obs! Det finns inga (tabell)kopplingar i den frågan. Hade det funnits en, skulle du ha sett extra indragsnivåer. Läs dem från mest indraget till minst indraget.



  1. Vad är det renaste sättet att få den aktuella lokala tiden i Postgres?

  2. gcc kommer inte att kompilera och köra MySQL C-bibliotek

  3. hur man raderar aktiva poster i databasen med hjälp av kodtändare

  4. google maps api infofönster flera markörer, samma plats