My Project
|
Public Types | |
enum | Type { IMPOSSIBLE, ALWAYS, MAYBE, KEY, KEY_SMALLER } |
Public Member Functions | |
SEL_TREE (enum Type type_arg) | |
SEL_TREE (SEL_TREE *arg, RANGE_OPT_PARAM *param) | |
Public Attributes | |
enum SEL_TREE::Type | type |
SEL_ARG * | keys [MAX_KEY] |
key_map | keys_map |
List< SEL_IMERGE > | merges |
key_map | ror_scans_map |
uint | n_ror_scans |
struct st_ror_scan_info ** | ror_scans |
struct st_ror_scan_info ** | ror_scans_end |
enum SEL_TREE::Type |
Starting an effort to document this field:
IMPOSSIBLE: if keys[i]->type == SEL_ARG::IMPOSSIBLE for some i, then type == SEL_TREE::IMPOSSIBLE. Rationale: if the predicate for one of the indexes is always false, then the full predicate is also always false.
ALWAYS: if either (keys[i]->type == SEL_ARG::ALWAYS) or (keys[i] == NULL) for all i, then type == SEL_TREE::ALWAYS. Rationale: the range access method will not be able to filter out any rows when there are no range predicates that can be used to filter on any index.
KEY: There are range predicates that can be used on at least one index.
KEY_SMALLER: There are range predicates that can be used on at least one index. In addition, there are predicates that cannot be directly utilized by range access on key parts in the same index. These unused predicates makes it probable that the row estimate for range access on this index is too pessimistic.