Вы можете использовать теги для запуска определенных функций / сценариев или не запускать их.
Чтобы конкретно игнорировать их, см. Игнорирование подмножества сценариев :
«Вы можете сказать Cucumber игнорировать сценарии с определенным тегом:
Использование класса бегуна JUnit :
@CucumberOptions(tags = "not @smoke")
public class RunCucumberTest {}
"
Мое обоснованное предположение состоит в том, что MySQL выигрывает. Это сделано для обработки данных таким образом. Огромные накладные расходы, связанные с перемещением всех данных в PHP для сортировки, дают ему преимущество при загрузке.
Вы, конечно, можете сами это выяснить, выполнив некоторые тесты производительности.
Конечно, вы должны сделать это на стороне MySQL
.
Но учтите, что ORDER BY RAND ()
очень неэффективен в MySQL
, поскольку требует сортировки файлов
.
См., Как выбрать 10
случайных строк эффективно с помощью сканирования одной таблицы:
SELECT *
FROM (
SELECT @cnt := COUNT(*) + 1,
@lim := 10
FROM t_random
) vars
STRAIGHT_JOIN
(
SELECT r.*,
@lim := @lim - 1
FROM t_random r
WHERE (@cnt := @cnt - 1)
AND RAND() < @lim / @cnt
) i
Подробные сведения о производительности см. В этой статье в моем блоге:
Для таблицы 1 000 000
записей,
Использование RAND () в MySQL определенно будет быстрее.
Для рандомизации с помощью PHP вам нужно будет запросить базу данных и поместить данные в память, так что у вас есть целый дополнительный шаг, добавляющий накладные расходы к процессу сортировки.
В MySQL этот тип запроса не будет таким быстрым, как упорядочение по индексированному значению, но он все равно будет сильно оптимизирован.
Обратите внимание, что вы используете rand () в качестве объекта для оператора order by:
select * from foo_table order by rand() limit 100