# Chapter 4: The Grand Operations When the Postgres beast receives your query, it doesn't just wildly guess what to do. It carefully constructs a battle plan—a Directed Acyclic Graph of operations. These are the verbs of our database. Some operations read data, some join things together, and some just sort things into neat little piles. When you ask Postgres to _EXPLAIN_ a query, it hands you this battle plan so you can see exactly which Grand Operations were chosen! # Table Operations ## ![[SeqScan]] ## ![[TableFuncScan]] # Index Operations ## ![[BitmapAndBitmapOr]] ## ![[BitmapIndexScan]] ## ![[IndexOnlyScan]] ## ![[IndexScan]] # Page Operations ## ![[BitmapHeapScan]] # Result Set Operations ## ![[Aggregate]] ## ![[Append]] ## ![[GatherMerge]] ## ![[Hash]] ## ![[HashJoin]] ## ![[Limit]] ## ![[Materialize]] ## ![[MergeAppend]] ## ![[MergeJoin]] ## ![[NestedLoop]] ## ![[ProjectSet]] ## ![[RecursiveUnion]] ## ![[SetOp]] ## ![[Sort]] ## ![[Unique]] # Concurrent/Distributed Result Set Operations ## ![[Broadcast]] ## ![[Redistribute]] ## ![[Gather]] # Tuple Operations ## ![[LockRows]] ## ![[ModifyTable]] ## ![[Result]] ## ![[SampleScan]] ## ![[TidScan]] # Other Result Set Operations ## ![[CTEScan]] ## ![[CustomScanForeignScan]] ## ![[FunctionScan]] ## ![[SubqueryScan]] ## ![[ValuesScan]]