Search Postgresql Archives

Help to understand Actual Rows vs Plan Rows from the query planner output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello I have some questions related to the query plan output about the planned and actual rows. In the following example:

# explain (analyze true, costs true, format yaml) select * from users where lower(city) = 'melanyfort' and lower(state) = 'ohio';
                                                 QUERY PLAN                                                 
------------------------------------------------------------------------------------------------------------
 - Plan:                                                                                                   +
     Node Type: "Bitmap Heap Scan"                                                                         +
     Parallel Aware: false                                                                                 +
     Relation Name: "users"                                                                                +
     Alias: "users"                                                                                        +
     Startup Cost: 10.78                                                                                   +
     Total Cost: 14.80                                                                                     +
     Plan Rows: 1                                                                                          +
     Plan Width: 73                                                                                        +
     Actual Startup Time: 0.155                                                                            +
     Actual Total Time: 0.155                                                                              +
     Actual Rows: 0                                                                                        +
     Actual Loops: 1                                                                                       +
     Recheck Cond: "((lower((city)::text) = 'melanyfort'::text) AND (lower((state)::text) = 'ohio'::text))"+
     Rows Removed by Index Recheck: 0                                                                      +
     Exact Heap Blocks: 0                                                                                  +
     Lossy Heap Blocks: 0                                                                                  +
     Plans:                                                                                                +
       - Node Type: "BitmapAnd"                                                                            +
         Parent Relationship: "Outer"                                                                      +
         Parallel Aware: false                                                                             +
         Startup Cost: 10.78                                                                               +
         Total Cost: 10.78                                                                                 +
         Plan Rows: 1                                                                                      +
         Plan Width: 0                                                                                     +
         Actual Startup Time: 0.153                                                                        +
         Actual Total Time: 0.153                                                                          +
         Actual Rows: 0                                                                                    +
         Actual Loops: 1                                                                                   +
         Plans:                                                                                            +
           - Node Type: "Bitmap Index Scan"                                                                +
             Parent Relationship: "Member"                                                                 +
             Parallel Aware: false                                                                         +
             Index Name: "users_lower_idx"                                                                 +
             Startup Cost: 0.00                                                                            +
             Total Cost: 4.66                                                                              +
             Plan Rows: 50                                                                                 +
             Plan Width: 0                                                                                 +
             Actual Startup Time: 0.048                                                                    +
             Actual Total Time: 0.048                                                                      +
             Actual Rows: 1                                                                                +
             Actual Loops: 1                                                                               +
             Index Cond: "(lower((city)::text) = 'melanyfort'::text)"                                      +
           - Node Type: "Bitmap Index Scan"                                                                +
             Parent Relationship: "Member"                                                                 +
             Parallel Aware: false                                                                         +
             Index Name: "lower_state_users_idx"                                                           +
             Startup Cost: 0.00                                                                            +
             Total Cost: 5.87                                                                              +
             Plan Rows: 211                                                                                +
             Plan Width: 0                                                                                 +
             Actual Startup Time: 0.102                                                                    +
             Actual Total Time: 0.102                                                                      +
             Actual Rows: 211                                                                              +
             Actual Loops: 1                                                                               +
             Index Cond: "(lower((state)::text) = 'ohio'::text)"                                           +
   Planning Time: 0.260                                                                                    +
   Triggers:                                                                                               +
   Execution Time: 0.249
(1 row)

aruprakshit=# 


------

In the first node type of "Bitmap Index Scan” on “users_lower_idx”, I see the plan rows are 50, but actual rows it got 1. In the second node type of "Bitmap Index Scan” on  lower_state_users_idx”, I see the plan rows are 211, and actual rows 211. Both are same. Based on what conditions planner estimated the planned and actual rows count? 


In node type “BitmapAnd”, I see again the actual rows 1, then why on the final plan i.e. Node Type: "Bitmap Heap Scan” again planner estimated rows 1? How does it counts these? What does the Loops count says us about the query?  


Thanks,

Arup Rakshit




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux