Я пытаюсь использовать сравнительный тест MySQL для тестирования некоторых запросов. Но, я работаю к ошибке.
SELECT benchmark (10000, (select title from user));
и в ответ я получаю эту ошибку;
ERROR 1242 (21000): Subquery returns more than 1 row
Кто-либо знает, как сравнить запроса?
Спасибо
select title from user
Это возвращает несколько строк, что не будет работать.
См. эту ссылку: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_benchmark
Передаваемое выражение должно возвращать скалярный результат.
Необходимо изменить запрос так, чтобы он возвращал одну строку: ex:
select title from user where user_name = 'some_user'
С http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_benchmark
Можно использовать только скалярные выражения. Хотя выражение может быть подзапрос, он должен вернуть один столбец и максимум один ряд. Для пример, BENCHMARK(10, (ВЫБЕРИТЬ * ОТКЛЮЧИТЬ) t)) провалится, если в таблице t будет больше чем один столбец или несколько строк.
Попробуйте
SELECT BENCHMARK(10000, (SELECT title FROM user LIMIT 1));
вы можете использовать утилиту mysqlslap для сравнения запросов, смотрите: http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html