The abstract plan language is a relational algebra that uses these operators:
g_join, the generic join, a high-level logical join operator. It describes inner, outer and existence joins, using either nested-loop joins or sort-merge joins.
nl_g_join, specifying a nested-loop join, including all inner, outer, and existence joins
m_g_join, specifying a merge join, including inner and outer joins.
union, a logical union operator. It describes both the union and the union all SQL constructs.
scan, a logical operator that transforms a stored table in a flow of rows, an abstract plan derived table. It allows partial plans that do not restrict the access method.
i_scan, a physical operator, implementing scan. It directs the optimizer to use an index scan on the specified table.
t_scan, a physical operator, implementing scan. It directs the optimizer to use a full table scan on the specified table.
store, a logical operator, describing the materialization of an abstract plan derived table in a stored worktable.
nested, a filter, describing the placement and structure of nested subqueries.
See “Schema for examples” for the create table and create index commands used for the examples in this section.
Additional abstract plan keywords are used for grouping and identification:
plan groups the elements when a plan requires multiple steps.
hints groups a set of hints for a partial plan.
prop introduces a set of scan properties for a table: prefetch, lru|mru and parallel.
table identifies a table when correlation names are used, and in subqueries or views.
work_t identifies a worktable.
in, used with table, for identifying tables named in a subquery (subq) or view (view).
subq is also used under the nested operator to indicate the attachment point for a nested subquery, and to introduce the subqueries abstract plan.