У меня есть две реляционные таблицы, из которых мне обе нужны данные. Первая (основная) таблица содержит около 90 тыс. Строк. Вторичная таблица содержит около 200 тыс. Строк плюс.
Мне нужно добавить некоторые данные вторичной таблицы к результатам, которые я получаю из первой таблицы, в настоящее время я делаю это в двух частях:
Во-первых: я выбираю нужные строки из главной таблицы, это происходит очень быстро.
$records = getData($conn, "
SELECT id
from Main
where contains_tags is not null
and contains_mediums is not null
and contains_techniques is not null
limit 100
");
-
Затем я перебираю каждую запись, чтобы добавить дополнительные данные из вторичной таблицы, но это занимает целую вечность (1 минута на 100 записей, 50 минут - 100 минут на записи 5 тыс. В конце мне нужно выполнить этот запрос для примерно 5-10 тыс. Строк Главный стол). Есть ли способ ускорить этот процесс?
foreach ($records as $r => $record) {
$records[$r]['mediums'] = getData($conn, "SELECT medium from mediums where kleding_id = ".$record['id']."");
kleding_id = ".$record['id']."");
}
Это желаемый результат после завершения обоих запросов:
[1] => Array
(
[id] => 15
[mediums] => Array
(
[0] => Array
(
[medium] => wol
)
[1] => Array
(
[medium] => katoen
)
)
)
Поэтому мой вопрос заключается в том, как эффективно запустить эту структуру запросов за минимальное время.
Основной стол выглядит так:
Вторичная таблица выглядит так:
Если что-то неясно, дайте мне знать, чтобы я мог уточнить.