select语句元素的支持
一个完整的select语句的元素的集合如下所示。select语句语法的详细信息请参见MySQL官网。
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr] ...
[into_option]
[FROM table_references
[PARTITION partition_list]]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS (window_spec)
[, window_name AS (window_spec)] ...]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[into_option]
[FOR {UPDATE | SHARE}
[OF tbl_name [, tbl_name] ...]
[NOWAIT | SKIP LOCKED]
| LOCK IN SHARE MODE]
[into_option]
into_option: {
INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name] ...
}
select语句每个元素项的支持情况如表1所示。
select语句元素 |
说明 |
支持情况 |
|---|---|---|
[ALL | DISTINCT | DISTINCTROW] |
|
|
[HIGH_PRIORITY] |
优化器使用,不影响执行结果集。 |
该关键字作用于MySQL优化器,不影响KOVAE执行或判断。 |
[STRAIGHT_JOIN] |
优化器使用,不影响执行结果集。 |
该关键字作用于MySQL优化器,不影响KOVAE执行或判断。 |
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] |
优化器使用,不影响执行结果集。 |
该关键字作用于MySQL优化器,不影响KOVAE执行或判断。 |
[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] |
优化器使用,不影响执行结果集。 |
该关键字作用于MySQL优化器,不影响KOVAE执行或判断。 |
select_expr [, select_expr] … |
表示select列表的表达式。KOVAE会对其判断每个item的类型,及其参数的类型,并对其每个参数进行递归判断。 |
部分支持,详细信息请参见item类型的支持。 |
[into_option] |
表示将结果集写入到服务端文件中。 |
不支持,不是常用场景。 |
[FROM table_references [PARTITION partition_list]] |
表示SQL相关的表和JOIN的关系。 |
|
[WHERE where_condition] |
表示where条件的表达式。KOVAE会对其判断每个item的类型,及其参数的类型,并对其每个参数进行递归判断。 |
部分支持,详细信息请参见item类型的支持。 |
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] |
表示group by子句。KOVAE会对其判断每个item的类型,及其参数的类型,并对其每个参数进行递归判断。 |
部分支持,详细信息请参见item类型的支持。 |
[HAVING where_condition] |
表示having条件的表达式。KOVAE会对其判断每个item的类型,及其参数的类型,并对其每个参数进行递归判断。 |
部分支持,详细信息请参见item类型的支持。 |
[WINDOW window_name AS (window_spec) [, window_name AS (window_spec)] ...] |
表示窗口函数。 |
不支持。 |
[ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] |
表示order by子句。KOVAE会对其判断每个item的类型,及其参数的类型,并对其每个参数进行递归判断。 |
部分支持,详细信息请参见item类型的支持。 |
[LIMIT {[offset,] row_count | row_count OFFSET offset}] |
表示limit子句。 |
支持。 |
[into_option] |
表示将结果集写入到服务端文件中。 |
不支持,不是常用场景。 |
[FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] |
表示对查询的数据进行锁定读取。 |
不支持。 |
[into_option] |
表示将结果集写入到服务端文件中。 |
不支持,不是常用场景。 |
项目 |
支持情况 |
|---|---|
语句类型 |
仅支持SQLCOM_SELECT类型的语句(select查询),不支持update等其他语句类型。 |
Union |
支持简单的非Union的select语句。 |
主表数和常量表数 |
不支持查询中主表包含常量表的情况。 |
Agg行数预估 |
不支持未充分评估Agg的执行计划。 |
查询最大fields数 |
不支持fields的数量大于MAX_FIELDS个的查询语句。 |
优化器提前确定结果集必然为空的查询 |
如果优化器已经确定查询结果集必然为空集,则不支持该查询。 |
字符集 |
仅支持UTF8MB4字符集。 |
仅支持表3中前5种表访问类型,其他访问方式均不支持。