11

我正在尝试使用 MySQL 基准测试一些查询。但是,我遇到了一个错误。

SELECT benchmark (10000, (select title from user));

作为回报,我得到了这个错误;

ERROR 1242 (21000): Subquery returns more than 1 row

有谁知道如何对查询进行基准测试?

谢谢

4

3 回答 3

11
select title from user

这将返回多行,这是行不通的。

参考这个链接: http ://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_benchmark

您传递的表达式必须返回一个标量结果。

您需要更改查询,使其返回单行:例如:

select title from user where user_name = 'some_user'
于 2009-12-28T19:41:34.173 回答
11

您可以使用 mysqlslap 实用程序对查询进行基准测试,请参阅: http ://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html

于 2009-12-28T21:50:29.560 回答
-1

来自http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_benchmark

只能使用标量表达式。尽管表达式可以是子查询,但它必须返回单列且最多单行。例如,如果表 t 包含多于一列或多于一行,则 BENCHMARK(10, (SELECT * FROM t)) 将失败。

尝试

SELECT BENCHMARK(10000, (SELECT title FROM user LIMIT 1));
于 2009-12-28T19:40:58.943 回答