Ситуация: мне нужно получить и отобразить данные на веб-странице, используя PHP из трех таблиц в базе данных MySQL (версия 8.0+), запущенной на локальном сервере (appserve).
проблема: у меня есть рабочий запрос, но получение данных занимает слишком много времени. У меня более 44000 записей, и моя машина - Windows 7, 64-битная, Intel Core i3 с 4 ГБ памяти (я упоминаю об этом, потому что, возможно, это естественно для более низкой машины, чтобы действовать таким образом).
Первые две таблицы состоят из author (автор книги), author_id (уникальный идентификатор автоинкремента для автора) и title (название книги), они совпадают, за исключением идентификатора, идентификатора первая - это INT, а вторая - VARCHAR, поэтому даже я хотел объединить то, что я не могу, в то время как третья таблица состоит из других разных деталей о книге, но в этом примере я использовал только author_id и pub_date (книга дата публикации), чтобы продемонстрировать ситуацию.
Книга может встретить несколько редакций, поэтому связь между title и pub_date - один ко многим, но на веб-странице я хочу отображать только самую последнюю редакцию или дату публикации, поэтому я использую MAX и GROUP BY.
Мой запрос:
SELECT a.author,
a.title,
a.author_id,
b.pub_date
FROM
( SELECT author,
title,
author_id
FROM authors_table
UNION
SELECT author,
title,
author_id
FROM old_authors_table
) a
LEFT
JOIN ( SELECT author_id,
max(pub_date) AS pub_date
FROM details_table
GROUP
BY author_id
) b
ON b.author_id = a.author_id;