MySQL 8.0.33
Source Code Documentation File Reference


class  anonymous_namespace{}::AggregateRowEstimator
 This class finds disjoint sets of aggregation terms that form prefixes of some non-hash index, and makes row estimates for those sets based on index metadata. More...
struct  anonymous_namespace{}::AggregateRowEstimator::Prefix
 A prefix of some key where each key_part corresponds to an aggregation term. More...


namespace  anonymous_namespace{}


using anonymous_namespace{}::TermArray = Mem_root_array< const Item * >
 Array of aggregation terms. More...


double EstimateCostForRefAccess (THD *thd, TABLE *table, unsigned key_idx, double num_output_rows)
void EstimateSortCost (AccessPath *path)
void AddCost (THD *thd, const ContainedSubquery &subquery, double num_rows, FilterCost *cost)
 Used internally by EstimateFilterCost() only. More...
FilterCost EstimateFilterCost (THD *thd, double num_rows, Item *condition, const Query_block *outer_query_block)
 Estimate the cost of evaluating “condition”, “num_rows” times. More...
void EstimateMaterializeCost (THD *thd, AccessPath *path)
double anonymous_namespace{}::EstimateAggregateNoRollupRows (const TermArray &terms, double child_rows, string *trace)
 Estimate row count for an aggregate operation (except for any rollup rows). More...
template<typename FunctionLow , typename FunctionHigh >
double anonymous_namespace{}::SmoothTransition (FunctionLow function_low, FunctionHigh function_high, double lower_limit, double upper_limit, double argument)
 For a function f(x) such that: f(x) = g(x) for x<=l f(x) = h(x) for x>l. More...
double anonymous_namespace{}::EstimateRollupRowsPrimitively (double aggregate_rows, size_t grouping_expressions)
 Do a cheap rollup row estimate for small result sets. More...
double anonymous_namespace{}::EstimateRollupRowsAdvanced (double aggregate_rows, TermArray &&terms, string *trace)
 Do more precise rollup row estimate for larger result sets. More...
double anonymous_namespace{}::EstimateAggregateRows (const AccessPath *child, const Query_block *query_block, bool rollup, string *trace)
 Estimate the row count for an aggregate operation (including ROLLUP rows for GROUP BY ... WITH ROLLUP). More...
void EstimateAggregateCost (AccessPath *path, const Query_block *query_block, string *trace)
void EstimateDeleteRowsCost (AccessPath *path)
void EstimateUpdateRowsCost (AccessPath *path)
void EstimateStreamCost (AccessPath *path)
 Estimate the costs and row count for a STREAM AccessPath. More...
void EstimateLimitOffsetCost (AccessPath *path)
 Estimate the costs and row count for a LIMIT_OFFSET AccessPath. More...

Function Documentation

◆ AddCost()

void AddCost ( THD thd,
const ContainedSubquery subquery,
double  num_rows,
FilterCost cost 

Used internally by EstimateFilterCost() only.

◆ EstimateAggregateCost()

void EstimateAggregateCost ( AccessPath path,
const Query_block query_block,
string *  trace 

◆ EstimateCostForRefAccess()

double EstimateCostForRefAccess ( THD thd,
TABLE table,
unsigned  key_idx,
double  num_output_rows 

◆ EstimateDeleteRowsCost()

void EstimateDeleteRowsCost ( AccessPath path)

◆ EstimateFilterCost()

FilterCost EstimateFilterCost ( THD thd,
double  num_rows,
Item condition,
const Query_block outer_query_block 

Estimate the cost of evaluating “condition”, “num_rows” times.

This is a fairly rudimentary estimation, but it includes the cost of any subqueries that may be present and that need evaluation.

◆ EstimateLimitOffsetCost()

void EstimateLimitOffsetCost ( AccessPath path)

Estimate the costs and row count for a LIMIT_OFFSET AccessPath.

◆ EstimateMaterializeCost()

void EstimateMaterializeCost ( THD thd,
AccessPath path 

◆ EstimateSortCost()

void EstimateSortCost ( AccessPath path)

◆ EstimateStreamCost()

void EstimateStreamCost ( AccessPath path)

Estimate the costs and row count for a STREAM AccessPath.

◆ EstimateUpdateRowsCost()

void EstimateUpdateRowsCost ( AccessPath path)