【问题标题】:MySQL BenchmarkMySQL 基准测试
【发布时间】:2010-12-30 13:54:33
【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

    标签: php mysql benchmarking mysql-error-1242


    【解决方案1】:
    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'
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        来自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));
        

        【讨论】:

        • 注意:虽然这确实修复了错误,但实际上并不能帮助他对他想要测试的查询进行基准测试。
        猜你喜欢
        • 2011-04-28
        • 2011-06-18
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2013-04-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多