我正在尝试使用MySQL基准来测试一些查询。但是,我遇到了一个错误。
SELECT benchmark (10000, (select title from user));
作为回报我得到了这个错误;
ERROR 1242 (21000): Subquery returns more than 1 row
有谁知道如何对查询进行基准测试?
由于
答案 0 :(得分:10)
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'
答案 1 :(得分:10)
您可以使用mysqlslap实用程序对查询进行基准测试,请参阅: http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html
答案 2 :(得分:-1)
来自http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_benchmark
只能使用标量表达式。 虽然表达式可以是一个 子查询,它必须返回单个 列,最多只有一行。对于 例如,BENCHMARK(10,(SELECT * FROM t))如果表t有更多,则会失败 超过一列或多于一行。
尝试
SELECT BENCHMARK(10000, (SELECT title FROM user LIMIT 1));