# 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]]