PHP

Два SQL запроса одновременно | PHP

Здравствуйте.

Как можно отправить ДВЕ SQL строки одним запросом в БД MySQL через PHP ?

Мой запрос — номер 1 :
 // запрос
$url = mysqli_query($connect_bd, "SELECT * FROM url WHERE number = '1'");

// получить массив
$response = mysqli_fetch_assoc($url);

// вывод
echo $response["text"];

Мой запрос — номер 2 :
 // Запрос 
$admin = mysqli_query($connect_bd, "SELECT * FROM users WHERE admin='1'");

// получить массив
$response = mysqli_fetch_assoc($admin);

// вывод
echo $response["id"];

Подскажите, пожалуйста, кто сталкивался с этим.
Просто хочу увеличить скорость загрузки страницы. Отправить в БД несколько SELECT и получить ответ одним запросом.

Благодарю.
Stas Li
Stas Li
107
А как ты отделишь данные одного запроса от данных другого - если хочешь получать их одним блоком?

Нет, два SELECT одним запросом получить не получится. Хочешь ускорить запросы - делай индексы для тех полей, которые используются в WHERE.
Юрий Белик
Юрий Белик
75 191
Лучший ответ
Stas Li Благодарю вас за развёрнутый ответ.

Да вот я и хотел узнать. Можно ли 1 запросом отправить 2 SELECT и потом как-то вытащить 2 массива array.

Придётся оставить 1 SELECT.
По-видимому, тебе нужны асинхронные запросы https://www.php.net/manual/en/mysqli.reap-async-query.php
Насколько это что-то ускорит - вопрос крайне сложный, там куча факторов.
Stas Li Просто думаю мой сайт отсылает 2 запроса в БД

А можно было бы 1 запрос с двумя SELECT отправить и получить два массива.

Потом конечно как-то надо массив разбирать на два куска.
Объединяют связанные запросы, а не когда "один в лес, другой по дрова". Если объединять всё подряд, то быстро столкнёшься с непропорционально возросшим временем на запросы к БД
Andrey Kulykov
Andrey Kulykov
89 576
  • то того один или два запроса скорость загрузки не увеличится т потому что запрос обычно занимает несколько микросекунд а поиск по ид еще быстрее по этому такая оптимизация больше липовая
  • если бы действительно код который содержит этот запрос выполнялся в высоконагруженном приложении многократно и серьезно занижал производительность на синтетических тестах то тогда бы это точно было бы не mysqli, не сували параметры в строчку запроса использовали бы подготовленные выражения и автор бы знал бы про UNION
  • объединить данные из разных таблиц которые связаны по каким ни будь полям можно через JOIN а если таблицы разные то результат можно склеить с помощью UNION главное чтобы количество столбцов в каждой его части совпадало но это не особо удобно и используется редко
Андрей Титов
Андрей Титов
59 846
Можно запрос перестроить и сделать 2 в одном
"SELECT * FROM url WHERE number = '1'
UNION
SELECT * FROM users WHERE admin='1'"
Юрий Белик Ты действительно думаешь, что структуры таблиц url и users совпадают? Во всех иных случаях такой UNION вернёт ошибку.