У меня есть две таблицы;Получение последнего уникального значения и дополнительной информации от другого
- Веб-страница - таблица, содержащая URL и название ряда сайтов
- Access - таблица, содержащее время доступа, клиент IP-адреса и URL из какого сайта доступа
Мне нужно, чтобы получить удерживать последний X (допустим, 10) обращается к любой заданной веб-странице, что является уникальной комбинацией ip и url. Поэтому, если пользователь несколько раз подключается к одной странице, это следует указывать только как одну (пусть сказать, последнюю) строку.
У меня есть запрос, который дает мне результат, который мне нужен, но он ЧРЕЗВЫЧАЙНО медленно. Для того, чтобы получить 10 последних уникальных обращений, требуется около 45 секунд.
Это запрос;
select ma.access_date, mp.name
from access ma, webpages mp
where ma.url = mp.url
and ma.id = (select max(id)
from access ma2
where ma2.client_id = ma.client_id
and ma2.url = ma.url)
order by ma.id desc
limit 10;
Как я могу это оптимизировать? Есть ли какой-то недостаток в моем запросе, или я полностью ошибаюсь?
С некоторыми незначительными редактирования это прекрасно работает и в настоящее время работает в 0,25 секунды. Благодарю. – Sander