028、SQL语句之函数

TiDB表达式中的函数

  • 函数对输入的数据进行计算
  • 函数的返回值可以作为表达式一部分
  • 语法: function_name([arg1 [, arg2 ,… , argn ]])
  • 示例
    • now(): 返回当前日期和时间
    • version(): 返回当前TiDB服务器版本

使用函数

  • 函数可以在任何接受表达式的地方使用
  • 大多数函数都需要参数才能执行
  • 列可以用作参数
  • 一个函数的输出可以用作另一个函数的输入
  • 数学函数在出错时返回Null值
    • 例如 在 error_for_division_by_zero SQL模式下,会报错
mysql> insert into test01 values(8/0);
ERROR 1365 (22012): Division by 0
mysql> select 8/0;
+------+
| 8/0  |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)

mysql> select @@SQL_MODE;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@SQL_MODE                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

函数类型

  • 字符串:对字符串的操作
  • 日期和时间:对日期和时间的操作
  • 数值:数学运算
  • 聚合:基于输入的多条记录返回单条记录
  • 窗口:返回分区计算的结果集

字符串函数

  • 计算字符串长度
  • 提取子字符串
  • 搜索或替换子字符串
  • 大小写转换
  • 转换位字符串或者数值

大小写转换

lower()/lcase(),upper()/ucase: 返回字符串,结果改为小写或大写。

mysql> select lower('TiDB'),lcase('TiDB'),upper('TiDB'),ucase('TiDB');
+---------------+---------------+---------------+---------------+
| lower('TiDB') | lcase('TiDB') | upper('TiDB') | ucase('TiDB') |
+---------------+---------------+---------------+---------------+
| tidb          | tidb          | TIDB          | TIDB          |
+---------------+---------------+---------------+---------------+
1 row in set (0.01 sec)

比较字符串

  • strcmp(): 比较str1和str2
  • 返回值:
    • 0 表示str1和str2 是相同
    • -1 表示str1 小于str2
    • 1 表示str1 大于str2
  • =: 测试字符串是否相等
mysql> select strcmp('aBC','Abc'),strcmp('ABC','ABC'),strcmp('Abc','aBC'),'ABC'='ABC';
+---------------------+---------------------+---------------------+-------------+
| strcmp('aBC','Abc') | strcmp('ABC','ABC') | strcmp('Abc','aBC') | 'ABC'='ABC' |
+---------------------+---------------------+---------------------+-------------+
|                   1 |                   0 |                  -1 |           1 |
+---------------------+---------------------+---------------------+-------------+
1 row in set (0.01 sec)

在字符串中查找字符串

  • insert(),locate(),position(): 返回指定字符串在另一个字符串中的位置
  • locate(searchStr,str,pos): 其中pos指定搜索的起始位置
mysql> select instr('TiDB','DB'),instr('TiDB','D'),locate('DB','TiDB'),position('DB' in 'TiDB');
+--------------------+-------------------+---------------------+--------------------------+
| instr('TiDB','DB') | instr('TiDB','D') | locate('DB','TiDB') | position('DB' in 'TiDB') |
+--------------------+-------------------+---------------------+--------------------------+
|                  3 |                 3 |                   3 |                        3 |
+--------------------+-------------------+---------------------+--------------------------+
1 row in set (0.00 sec)
mysql> select locate('DB','TiDB is a NewSQL style DB',7);
+--------------------+-------------------+---------------------+--------------------------+
|              24 |
+--------------------+-------------------+---------------------+--------------------------+
1 row in set (0.00 sec)

逆向、连接

  • concat(),concat_ws() :将给定的参数连接成一个字符串
  • reverse() : 返回字符串,字符的顺序相反
mysql> select reverse('abcdefg') , concat('hello','world'),concat_ws(':','pingcap','cmg','pe');
+--------------------+-------------------------+-------------------------------------+
| reverse('abcdefg') | concat('hello','world') | concat_ws(':','pingcap','cmg','pe') |
+--------------------+-------------------------+-------------------------------------+
| gfedcba            | helloworld              | pingcap:cmg:pe                      |
+--------------------+-------------------------+-------------------------------------+
1 row in set (0.00 sec)

处理Null

  • 传递Null到concat函数,导致它返回null
  • concat_ws() 忽略null参数
mysql> select concat('welcome ','to ',null),concat_ws(',','welcome','to',null);
+-------------------------------+------------------------------------+
| concat('welcome ','to ',null) | concat_ws(',','welcome','to',null) |
+-------------------------------+------------------------------------+
| NULL                          | welcome,to                         |
+-------------------------------+------------------------------------+
1 row in set (0.00 sec)

使用管道运算符连接字符串

mysql> set sql_mode=pipes_as_concat;
Query OK, 0 rows affected (0.00 sec)

mysql> select 'welcome '|| ' to '||'TiDB!';
+------------------------------+
| 'welcome '|| ' to '||'TiDB!' |
+------------------------------+
| welcome  to TiDB!            |
+------------------------------+
1 row in set (0.00 sec)

left,right,lpad,rpad

left(str,numchar),right(str,numchar): 返回字符串中最左边或最右边的numchar字符
lpad(str,len,padstr),rpad(str,len,padstr): 返回一个在左侧或右侧填充有padstr的字符串,长度不超过len个字符
例如:

mysql> select left('TSO',1),right('TSO',2),lpad('TSO',4,'#'),rpad('TSO',4,'#');
+---------------+----------------+-------------------+-------------------+
| left('TSO',1) | right('TSO',2) | lpad('TSO',4,'#') | rpad('TSO',4,'#') |
+---------------+----------------+-------------------+-------------------+
| T             | SO             | #TSO              | TSO#              |
+---------------+----------------+-------------------+-------------------+
1 row in set (0.01 sec)

substring 检索字符串的一部分

substring(string,startpos [,length]): 返回一个子字符串,其长度不超过字符的起始于startpos
如果省略length,则子字符串将包括结尾的所有字符
如果startpos 为负数,则子字符串返回从末尾开始

mysql> select substring('TiDB SQL',2),substring('TiDB SQL',1,2),substring('TiDB SQL',-2,2);
+-------------------------+---------------------------+----------------------------+
| substring('TiDB SQL',2) | substring('TiDB SQL',1,2) | substring('TiDB SQL',-2,2) |
+-------------------------+---------------------------+----------------------------+
| iDB SQL                 | Ti                        | QL                         |
+-------------------------+---------------------------+----------------------------+
1 row in set (0.00 sec)

substring_index

返回分隔符出现次数count之前的字符串中的子字符串,如果count为负数,则方向反转

mysql> select substring_index('853:888:777:598',':',1),substring_index('853:888:777:598',':',2),substring_index('853:888:777:598',':',-2) \G;
*************************** 1. row ***************************
 substring_index('853:888:777:598',':',1): 853
 substring_index('853:888:777:598',':',2): 853:888
substring_index('853:888:777:598',':',-2): 777:598
1 row in set (0.00 sec)

ERROR: 
No query specified

trim,ltrim,rtrim: 修剪字符串

trim([BOTH|LEADING|TRAILING [substring] FROM] string)
返回substring 移除后的字符串
如果未指定both,leading trailing 选项,默认为both
如果substring 省略,空格将被删除
ltrim(),rtrim(),trim(): 可以删除出现在左侧、右侧或两侧的空格字符

mysql> select trim(leading 'Ti' from 'Tidb'),ltrim(' TiDB'),'#'||trim('  TiKV  ')||'#';
+--------------------------------+----------------+----------------------------+
| trim(leading 'Ti' from 'Tidb') | ltrim(' TiDB') | '#'||trim('  TiKV  ')||'#' |
+--------------------------------+----------------+----------------------------+
| db                             | TiDB           |                          0 |
+--------------------------------+----------------+----------------------------+
1 row in set, 3 warnings (0.00 sec)

mysql> set @@sql_mode=ORACLE;
Query OK, 0 rows affected (0.00 sec)
mysql> select trim(leading 'Ti' from 'Tidb'),ltrim(' TiDB'),'#'||trim('  TiKV  ')||'#';
+--------------------------------+----------------+----------------------------+
| trim(leading 'Ti' from 'Tidb') | ltrim(' TiDB') | '#'||trim('  TiKV  ')||'#' |
+--------------------------------+----------------+----------------------------+
| db                             | TiDB           | #TiKV#                     |
+--------------------------------+----------------+----------------------------+
1 row in set (0.00 sec)
mysql> select trim(leading 'Ti' from 'TidbTi');
+----------------------------------+
| trim(leading 'Ti' from 'TidbTi') |
+----------------------------------+
| dbTi                             |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select trim(trailing 'Ti' from 'TidbTi');
+-----------------------------------+
| trim(trailing 'Ti' from 'TidbTi') |
+-----------------------------------+
| Tidb                              |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> select trim(both 'Ti' from 'TidbTi');
+-------------------------------+
| trim(both 'Ti' from 'TidbTi') |
+-------------------------------+
| db                            |
+-------------------------------+
1 row in set (0.00 sec)

插入和替换字符串中的某些部分

replace (str,substr,newstring) : 将str中的substr替换为新字符串
insert(str,pos,len,newstring): 在str中pos处放置新字符串,覆盖len长度字符

mysql> select replace('Use K8s to setup','K8s','tiup'),insert('Use OGG to migrate',5,3,'dumpling and Lightning');
+------------------------------------------+-----------------------------------------------------------+
| replace('Use K8s to setup','K8s','tiup') | insert('Use OGG to migrate',5,3,'dumpling and Lightning') |
+------------------------------------------+-----------------------------------------------------------+
| Use tiup to setup                        | Use dumpling and Lightning to migrate                     |
+------------------------------------------+-----------------------------------------------------------+
1 row in set (0.01 sec)

确定字符串长度

length() : 以字节为单位返回字符串长度
char_length(): 返回字符串长度(以字符为单位)

mysql> select length('TiDB 部署中'),char_length('TiDB 部署中');
+--------------------------+-------------------------------+
| length('TiDB 部署中')    | char_length('TiDB 部署中')    |
+--------------------------+-------------------------------+
|                       14 |                             8 |
+--------------------------+-------------------------------+
1 row in set (0.00 sec)

匹配字符串模式: like

使用like 运算符匹配字符串
expression like ‘pattern’
在模式中使用通配符
%: 匹配任何零个或多个字符的序列
_: 匹配任何单个字符
not like: 用于反向匹配

匹配字符串模式: rlike

正则表达式是复杂搜索指定模式的强大方法
rlike,regxp 运算符: expression rlike | regxp ‘regexp-pattern’
\ 作为转义字符
() 对多个正则表达式元素进行分组
^:字符串的开头
$:字符串的结尾
.:任何单个字符
x*:零个或更多x
x+:一个或多个x
x?:零个或一个x

示例

Los|Las, L[oa]s: 表达式等价
^[A-HJ-NP-Z][0-9]{
    
    4}([A-Z]{
    
    3})?$
mysql> select name,mass from universe.planets where name rlike '(Ura|Ve)nus';
+--------+------+
| name   | mass |
+--------+------+
| Venus  | 4.87 |
| Uranus | 86.8 |
+--------+------+
2 rows in set (0.00 sec)

日期与时间函数

执行类似以下操作
提取部分日期和时间
更改格式
转换
可以通过多种方式生成日期和时间数据
复制现有数据
使用内置函数
构建字符串表示形式,使TiDb评估为日期与时间

日期和时间格式

日期类型 默认格式
date yyyy-mm-dd
time hh:mm:ss
datetime yyyy-mm-dd hh:mm:ss
timestamp yyyy-mm-dd hh:mm:ss
year yyyy

日期和时间函数

now(): 服务器上的当前日期时间,返回datetime
curdate(): 服务器上的当前日期,返回date
curtime(): 当前服务器上的时间,返回time
year(): 年份year格式
monthname(): 一年中的月份
dayname(): 一周总的某天
dayofyear(): 一年中的某天
hour(),minute(),second(),microsecond()

mysql> select now(),curdate(),curtime(),year(now()),dayname(now());
+---------------------+------------+-----------+-------------+----------------+
| now()               | curdate()  | curtime() | year(now()) | dayname(now()) |
+---------------------+------------+-----------+-------------+----------------+
| 2023-06-05 18:38:10 | 2023-06-05 | 18:38:10  |        2023 | Monday         |
+---------------------+------------+-----------+-------------+----------------+
1 row in set (0.00 sec)

日期和时间算术

date_add,date_sub
+/- interval

mysql> select now() + interval '1 12:12:12.123456' DAY_MICROSECOND,now() + interval '12.123456' SECOND_MICROSECOND,now() - interval '1-3' YEAR_MONTH, date_add(now(), interval 1 week),date_sub(now(),interval 1 week),date_sub(now(),interval 1 quarter);
+------------------------------------------------------+-------------------------------------------------+-----------------------------------+----------------------------------+---------------------------------+------------------------------------+
| now() + interval '1 12:12:12.123456' DAY_MICROSECOND | now() + interval '12.123456' SECOND_MICROSECOND | now() - interval '1-3' YEAR_MONTH | date_add(now(), interval 1 week) | date_sub(now(),interval 1 week) | date_sub(now(),interval 1 quarter) |
+------------------------------------------------------+-------------------------------------------------+-----------------------------------+----------------------------------+---------------------------------+------------------------------------+
| 2023-06-07 06:56:21.123456                           | 2023-06-05 18:44:21.123456                      | 2022-03-05 18:44:09               | 2023-06-12 18:44:09              | 2023-05-29 18:44:09             | 2023-03-05 18:44:09                |
+------------------------------------------------------+-------------------------------------------------+-----------------------------------+----------------------------------+---------------------------------+------------------------------------+
1 row in set (0.03 sec)

将日期格式转化为字符串

date_format()
http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html#function_date-format
get_format()
例如get_format({date|time|datetime},{‘EUR’,’USA’,’JIS’,’ISO’,’INTERNAL’})

mysql> select date_format(now(),'%a %Y-%m-%d %T'),date_format(now(),'%Y-%m-%d %r'),date_format(now(),'%W,%M %e, %Y'),date_format(now(),'%a, %b %e %l:%i %p'),date_format(now(),'%d-%b-%Y'),date_format(now(),'%a, %b %e ,%Y'),date_format(now(),'%M %e,%Y %H:%i'),date_format(now(),'%W ,the %D of %M') \G;
*************************** 1. row ***************************
    date_format(now(),'%a %Y-%m-%d %T'): Mon 2023-06-05 18:51:58
       date_format(now(),'%Y-%m-%d %r'): 2023-06-05 06:51:58 PM
      date_format(now(),'%W,%M %e, %Y'): Monday,June 5, 2023
date_format(now(),'%a, %b %e %l:%i %p'): Mon, Jun 5 6:51 PM
          date_format(now(),'%d-%b-%Y'): 05-Jun-2023
     date_format(now(),'%a, %b %e ,%Y'): Mon, Jun 5 ,2023
    date_format(now(),'%M %e,%Y %H:%i'): June 5,2023 18:51
  date_format(now(),'%W ,the %D of %M'): Monday ,the 5th of June
1 row in set (0.00 sec)

ERROR: 
No query specified

创建日期

makedate(year,dayofyear) : 创建date
maketime(hour,min,sec): 创建time
str_to_date(str,fmt): 创建datetime
日期字面值

mysql> select get_format(DATE,'INTERNAL'),get_format(TIME,'INTERNAL'),get_format(DATETIME,'INTERNAL'),makedate(2023,101),maketime(12,23,54) \G;
*************************** 1. row ***************************
    get_format(DATE,'INTERNAL'): %Y%m%d
    get_format(TIME,'INTERNAL'): %H%i%s
get_format(DATETIME,'INTERNAL'): %Y%m%d%H%i%s
             makedate(2023,101): 2023-04-11
             maketime(12,23,54): 12:23:54
1 row in set (0.01 sec)

ERROR: 
No query specified

比较日期

datediff(now(),‘2023-01-01’) : 返回两个日期之间的天数

mysql> select datediff(now(),'2023-01-01'),datediff('2023-01-01',now());
+------------------------------+------------------------------+
| datediff(now(),'2023-01-01') | datediff('2023-01-01',now()) |
+------------------------------+------------------------------+
|                          179 |                         -179 |
+------------------------------+------------------------------+
1 row in set (0.00 sec)

基本算术函数

mysql> select abs(-234.5),sign(-6),floor(343.543),ceiling(2343.34),truncate(343.4543,3),truncate(343.4543,-1),round(343.4543),round(343.4543,2),round(343.4543,-2);
+-------------+----------+----------------+------------------+----------------------+-----------------------+-----------------+-------------------+--------------------+
| abs(-234.5) | sign(-6) | floor(343.543) | ceiling(2343.34) | truncate(343.4543,3) | truncate(343.4543,-1) | round(343.4543) | round(343.4543,2) | round(343.4543,-2) |
+-------------+----------+----------------+------------------+----------------------+-----------------------+-----------------+-------------------+--------------------+
|       234.5 |       -1 |            343 |             2344 |              343.454 |                   340 |             343 |            343.45 |                300 |
+-------------+----------+----------------+------------------+----------------------+-----------------------+-----------------+-------------------+--------------------+
1 row in set (0.01 sec)

Group by分组

将行记录分组
only_full_group_by :如果出现在select列表欧中的列,并且有在group by或聚合函数中出现,则SQL不合法

窗口函数

  • 窗口函数为结果集中的每个输入的记录计算输出,rank排名
  • 除了示例中的RANK(),TiDB支持的窗口函数还有:
cume_dist(),dense_rank(),first_value(),lag(),last_value(),lead(),nth_value(),ntitle(),percent_rank(),row_number()

rank: 排名

mysql> select name,mass,gravity,rank() over (partition by category_id order by mass desc) as mass_rank_within_category from universe.planets;
+--------------------+--------+---------+---------------------------+
| name               | mass   | gravity | mass_rank_within_category |
+--------------------+--------+---------+---------------------------+
| Proxima Centauri b | 7.5819 |    11.3 |                         1 |
| Earth              |   5.97 |     9.8 |                         2 |
| Venus              |   4.87 |     8.9 |                         3 |
| Mars               |  0.642 |     3.7 |                         4 |
| Mercury            |   0.33 |     3.7 |                         5 |
| Pluto              |  0.013 |     0.7 |                         1 |
| Jupiter            |   1898 |    23.1 |                         1 |
| Saturn             |    568 |     9.0 |                         2 |
| Neptune            |    102 |    11.0 |                         3 |
| Uranus             |   86.8 |     8.7 |                         4 |
+--------------------+--------+---------+---------------------------+
10 rows in set (0.00 sec)

lag: 显示上一行

mysql> select name,mass,lag(name,1,'---') over (order by mass) from universe.planets order by mass;
+--------------------+--------+----------------------------------------+
| name               | mass   | lag(name,1,'---') over (order by mass) |
+--------------------+--------+----------------------------------------+
| Pluto              |  0.013 | ---                                    |
| Mercury            |   0.33 | Pluto                                  |
| Mars               |  0.642 | Mercury                                |
| Venus              |   4.87 | Mars                                   |
| Earth              |   5.97 | Venus                                  |
| Proxima Centauri b | 7.5819 | Earth                                  |
| Uranus             |   86.8 | Proxima Centauri b                     |
| Neptune            |    102 | Uranus                                 |
| Saturn             |    568 | Neptune                                |
| Jupiter            |   1898 | Saturn                                 |
+--------------------+--------+----------------------------------------+
10 rows in set (0.01 sec)

显示上两行

mysql> select name,mass,lag(name,2,'---') over (order by mass) from universe.planets order by mass;
+--------------------+--------+----------------------------------------+
| name               | mass   | lag(name,2,'---') over (order by mass) |
+--------------------+--------+----------------------------------------+
| Pluto              |  0.013 | ---                                    |
| Mercury            |   0.33 | ---                                    |
| Mars               |  0.642 | Pluto                                  |
| Venus              |   4.87 | Mercury                                |
| Earth              |   5.97 | Mars                                   |
| Proxima Centauri b | 7.5819 | Venus                                  |
| Uranus             |   86.8 | Earth                                  |
| Neptune            |    102 | Proxima Centauri b                     |
| Saturn             |    568 | Uranus                                 |
| Jupiter            |   1898 | Neptune                                |
+--------------------+--------+----------------------------------------+
10 rows in set (0.02 sec)

lead :显示下一行

mysql> select name,mass,lead(name,1,'---') over (order by mass) from universe.planets order by mass;
+--------------------+--------+-----------------------------------------+
| name               | mass   | lead(name,1,'---') over (order by mass) |
+--------------------+--------+-----------------------------------------+
| Pluto              |  0.013 | Mercury                                 |
| Mercury            |   0.33 | Mars                                    |
| Mars               |  0.642 | Venus                                   |
| Venus              |   4.87 | Earth                                   |
| Earth              |   5.97 | Proxima Centauri b                      |
| Proxima Centauri b | 7.5819 | Uranus                                  |
| Uranus             |   86.8 | Neptune                                 |
| Neptune            |    102 | Saturn                                  |
| Saturn             |    568 | Jupiter                                 |
| Jupiter            |   1898 | ---                                     |
+--------------------+--------+-----------------------------------------+
10 rows in set (0.01 sec)

Flow Control 函数

  • Case 表达式
  • nullif () 函数
  • ifnull () 函数
  • if() 函数

case表达式

mysql> select case when null='' then true when null <>'' then false else'=)' end;
+--------------------------------------------------------------------+
| case when null='' then true when null <>'' then false else'=)' end |
+--------------------------------------------------------------------+
| =)                                                                 |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select null<>'';
+----------+
| null<>'' |
+----------+
|     NULL |
+----------+
1 row in set (0.00 sec)

mysql> select case null when '' then true when 0 then false else '=)' end;
+-------------------------------------------------------------+
| case null when '' then true when 0 then false else '=)' end |
+-------------------------------------------------------------+
| =)                                                          |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

NULLIF 和IFNULL

  • nullif(expr1,expr2): 测试expr1 和 expr2 是否相等
  • ifnull(expr1,expr2): 返回第一个非空 expr
mysql> select nullif('A','A'),nullif('A','B');
+-----------------+-----------------+
| nullif('A','A') | nullif('A','B') |
+-----------------+-----------------+
|            NULL | A               |
+-----------------+-----------------+
1 row in set (0.01 sec)

mysql> select ifnull('A','B'),ifnull(17/0,'A');
+-----------------+------------------+
| ifnull('A','B') | ifnull(17/0,'A') |
+-----------------+------------------+
| A               | A                |
+-----------------+------------------+
1 row in set, 1 warning (0.01 sec)
	

IF函数

-if(cond,then_return,else_return)

mysql> select if('ABC'>'aBC','+++','---');
+-----------------------------+
| if('ABC'>'aBC','+++','---') |
+-----------------------------+
| ---                         |
+-----------------------------+
1 row in set (0.00 sec)

表达式下推

  • 当TiDB从TiKV中读取数据的时候,TiDB会尽量下推一些表达式运算到TiKV中 ,从而减少数据量传输量以及TiDB单一节点的计算压力

  • 逻辑运算符: and ,&&,or,||,not,!

  • 比较运算符:< <= = != <> > >= <=> in , is null,like,is true, is false, coalesce()

  • 数值运算: + - * / abs() ceil() ceiling() floor()

  • 控制流运算:case if() ifnull()

  • 日期运算: date_format()

  • 通过观察执行计划中任务字段的task.cop[tikv] 来确定运算是否支持表达式下推

# 出现cop[tikv] 就表示下推
mysql> explain select name,mass from universe.planets where name like 'M%';
+-------------------------------+---------+-----------+---------------------------------+-------------------------------------------------+
| id                            | estRows | task      | access object                   | operator info                                   |
+-------------------------------+---------+-----------+---------------------------------+-------------------------------------------------+
| IndexLookUp_10                | 0.25    | root      |                                 |                                                 |
| ├─IndexRangeScan_8(Build)     | 0.25    | cop[tikv] | table:planets, index:name(name) | range:["M","N"), keep order:false, stats:pseudo |
| └─TableRowIDScan_9(Probe)     | 0.25    | cop[tikv] | table:planets                   | keep order:false, stats:pseudo                  |
+-------------------------------+---------+-----------+---------------------------------+-------------------------------------------------+
3 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/wangzhicheng987/article/details/131054756