Здравствуйте.
Как можно отправить ДВЕ 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 и получить ответ одним запросом.
Благодарю.
А как ты отделишь данные одного запроса от данных другого - если хочешь получать их одним блоком?
Нет, два SELECT одним запросом получить не получится. Хочешь ускорить запросы - делай индексы для тех полей, которые используются в WHERE.
По-видимому, тебе нужны асинхронные запросы https://www.php.net/manual/en/mysqli.reap-async-query.php
Насколько это что-то ускорит - вопрос крайне сложный, там куча факторов.
Объединяют связанные запросы, а не когда "один в лес, другой по дрова". Если объединять всё подряд, то быстро столкнёшься с непропорционально возросшим временем на запросы к БД
- то того один или два запроса скорость загрузки не увеличится т потому что запрос обычно занимает несколько микросекунд а поиск по ид еще быстрее по этому такая оптимизация больше липовая
- если бы действительно код который содержит этот запрос выполнялся в высоконагруженном приложении многократно и серьезно занижал производительность на синтетических тестах то тогда бы это точно было бы не mysqli, не сували параметры в строчку запроса использовали бы подготовленные выражения и автор бы знал бы про UNION
- объединить данные из разных таблиц которые связаны по каким ни будь полям можно через JOIN а если таблицы разные то результат можно склеить с помощью UNION главное чтобы количество столбцов в каждой его части совпадало но это не особо удобно и используется редко
Можно запрос перестроить и сделать 2 в одном
"SELECT * FROM url WHERE number = '1'
UNION
SELECT * FROM users WHERE admin='1'"
Да вот я и хотел узнать. Можно ли 1 запросом отправить 2 SELECT и потом как-то вытащить 2 массива array.
Придётся оставить 1 SELECT.