一个完整的select语句的元素的集合如下所示。select语句语法的详细信息请参见MySQL官网:https://dev.mysql.com/doc/refman/8.0/en/select.html。
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种表访问类型,其他访问方式均不支持。