Задать вопрос
@sait4seo

Скорость выборок Mysql, стоит ли группировать запросы или выбирать по одному?

Делаю проект на связке php, mysql. Хочу узнать стоит ли группировать sql-запросы, чтобы выполнить их разом т е (упрощённый пример)
1) без группировки
$t[1]=$db->query('SELECT * FROM table1;');
//...какой-то код на пхп
$t[2]=$db->query('SELECT * FROM table2;');


2) с группировкой (мультиселект)
$t=$db->query('SELECT * FROM table1; SELECT * FROM table2;');

т е
PHP->MySQL->PHP->MySQL->PHP
или
PHP->MySQL->MySQL->PHP

попрошу с аргументами, запросов может быть и 30
  • Вопрос задан
  • 2527 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
begemot_sun
@begemot_sun
Программист в душе.
а как вы результат собрались получить во втором случае?
Ответ написан
benbor
@benbor
Помог ответ - не забудь лайкнуть
1. Какой бы не был ответ на конкретно Ваш вопрос, для одиночных запросов, это "экономия на спичках". Во всяком случае, это касается запросов к БД с больше 1000 строк (цифры, разумеется, взяты просто так, но смысл вы уловили).
2. Возьмите конкретные запросы из своего приложения ( Вам ведь для этого нужен ответ? ) и сделайте тест. На реальных запросах в Вашей системе Вы получите необходимый Вам ответ.
3. Не используйте * в селекторе. Это уже увеличивает время запроса.
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Коннект к базе вы персистентный держите?
Если держите - то пока вы не окунетесь в highload (больше 1k rps на вашу страницу), то вообще без разницы.
Если не держите - то будут дополнительные накладные расходы на установление коннекта. Но их там тоже немного при небольшой нагрузке.

Так что в данном случае исходить нужно из того, как будет читаемее и удобнее вам самим.
Ответ написан
@sait4seo Автор вопроса
Не использую персистентный коннект, стоит его использовать? (не использовал по скольку нагуглил как-то кучу проблем с ним, мол плодятся процессы т д), если есть толковая ссылка по pdo persistent connect и как его правильно готовить угостите, буду благодарен.

Насчёт удобочитаемости можно ведь не выполнять сразу запрос, а сначала собрать их и сконкатенировать, а потом например сделать
$db->fire();
такой вариант ведь имеет право на жизнь?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы