MySQL基准测试

时间:2009-12-28 19:38:14

标签: php mysql benchmarking mysql-error-1242

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

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

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

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

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

由于

3 个答案:

答案 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));