MariaDB BENCHMARK() 函数使用指南

在 MariaDB 中,BENCHMARK() 是一个内置函数,它将给定的表达式重复执行指定的次数。

MariaDB BENCHMARK() 函数主要在 mysql 命令行工具使用,以报告查询执行时间。

MariaDB BENCHMARK() 语法

这里是 MariaDB BENCHMARK() 函数的语法:

BENCHMARK(count, expr)

参数

count
必需的。 指定的次数。
expr
必需的。 要执行的表达式。

如果您不提供错误数量的参数,MariaDB 将报告一个错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'

返回值

MariaDB BENCHMARK() 函数总是返回 0

如果第一个参数给定一个负的次数或者 NULL,,BENCHMARK() 函数将返回 NULL

MariaDB BENCHMARK() 示例

示例 1

下面的示例展示了如何使用 BENCHMARK() 函数重复执行 10000000 次 MD5('aaa') 函数。

SELECT BENCHMARK(10000000, MD5('aaa'));

输出:

+---------------------------------+
| BENCHMARK(10000000, MD5('aaa')) |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set (1.502 sec)

该函数返回了 0,但是您可以从 1 row in set (1.502 sec) 获取执行时间。

示例 2

下面的示例展示了如何使用 BENCHMARK() 函数重复执行 10 次 SLEEP(1) 函数。

SELECT BENCHMARK(10, SLEEP(1));

输出:

+-------------------------+
| BENCHMARK(10, SLEEP(1)) |
+-------------------------+
|                       0 |
+-------------------------+
1 row in set (10.111 sec)

在本示例中, SLEEP(1) 函数将执行暂行 1 秒。

示例 3 - 负值 or NULL

如果第一个参数给定一个负的次数或者 NULLBENCHMARK() 函数将返回 NULL

SELECT
  BENCHMARK(-10, SLEEP(1)),
  BENCHMARK(NULL, SLEEP(1));

输出:

+--------------------------+---------------------------+
| BENCHMARK(-10, SLEEP(1)) | BENCHMARK(NULL, SLEEP(1)) |
+--------------------------+---------------------------+
|                     NULL |                      NULL |
+--------------------------+---------------------------+
1 row in set, 1 warning (0.000 sec)

结论

在 MariaDB 中,BENCHMARK() 是一个内置函数,它将给定的表达式重复执行指定的次数。