Когда и как использовать несколько запросов MySQL с PHP (PDO) - PullRequest
5 голосов
/ 27 марта 2009

Каковы преимущества использования нескольких запросов MySQL в выражении, кроме минимизации кода.

Как вы выполняете, извлекаете и отображаете результаты нескольких запросов MySQL, отправленных в одном выражении с использованием PHP (и предпочтительно PDO).

Ответы [ 4 ]

7 голосов
/ 27 марта 2009

mysql_query () не поддерживает несколько запросов. Однако есть несколько обходных путей:

http://www.dev -explorer.com / статьи / множественные-MySQL-запросов
http://php.net/function.mysql-query

4 голосов
/ 27 марта 2009

Независимо от того, какую базу данных вы используете, может быть более эффективно поместить несколько запросов в один оператор. Если вы выполняете запросы по отдельности, вам необходимо выполнить вызов к базе данных по сети (или, по крайней мере, между процессами, находящимися на одной машине), получить соединение с ней (включая аутентификацию), передать запрос, вернуть набор результатов и освободите соединение для каждого запроса.

Даже если вы используете пул соединений, вы все равно передаете больше запросов туда и обратно, чем необходимо.

Так, например, если вы объединяете два запроса в один, вы сохраняете все эти дополнительные вызовы назад и вперед для второго запроса. Чем больше запросов вы комбинируете, тем более эффективным может стать ваше приложение.

В другом примере многие приложения заполняют списки (например, для выпадающих списков) при запуске. Это может быть несколько запросов. Выполнение их всех за один вызов может ускорить время запуска.

1 голос
/ 23 декабря 2012

Сегодня вечером я проводил некоторые исследования и наткнулся на эту тему. Ни один из ответов выше не дает жизнеспособного решения этой простой проблемы.

Используя подход OO, вы можете выполнять несколько операторов запроса в одном соединении с помощью метода multi_query ().

$db_connection->multi_query($query);

Запросы должны быть правильно сформированы и разделены точками с запятой ->;

см. Руководство PHP для более подробной информации о том, как обрабатывать данные SELECT

0 голосов
/ 12 марта 2013

Несколько запросов по одному и тому же вызову особенно полезны, когда вам нужно работать с переменными сеанса и временными таблицами:

select somecol, @somevar := group_concat( distinct somecol2 separator '|')
from sometbl
where
    somecol LIKE "fueh"
group by somecol;

select somecol2
from  sometbl
where
    somecol LIKE "nyan"
and
    vc_wp regexp concat( '(', @somevar, ')' )
order by somecol;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...