Parsing - Query Planning - Compiling

The terms Parsing (Oracle), Query
Planning (PostgreSQL) and Compiling (SQL
Server) describe the process to transform a SQL statement into an execution plan.

Databases with a shared execution plan cache have two parsing
phases:

Hard Parsing

Hard parsing is constructing an execution plan based on the
SQL statement. That's a major effort; inspecting all parts of the
SQL; considering all indexes; considering all join orders and so
on. Hard parsing is very resource intensive.

Soft Parsing

Soft parsing is searching, finding and using a cached
execution plan. There are some minor checks done, e.g., access
rights, but the execution plan can be re-used as is. That is a
rather fast operation.

The key to the cache is basically the literal SQL
string—usually a hash of it. If there is no exact match, a hard
parse is triggered. That's why inlined literals—as opposed to bind
parameters—trigger a hard parse unless the very same search terms
are used again. But even in that case there are good chances that
the previous execution plan was already expired from the cache
because new ones are coming over and over again.