Подскажите, пожалуйста, как лучше составить запрос к mysql для вывода новостей на DLE, чтобы максимально ускорить? по дефолту представлен следующий запрос:
SELECT p.id, p.autor, p.date, p.short_story,
CHAR_LENGTH(p.full_story) as full_story,
p.xfields, p.title, p.category, p.alt_name,
p.comm_num, p.allow_comm, p.fixed, p.tags,
e.news_read, e.allow_rate, e.rating, e.vote_num,
e.votes, e.view_edit, e.editdate, e.editor, e.reason
FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id)
WHERE approve=1 AND allow_main=1 AND date < '2017-05-18 14:23:53'
ORDER BY date DESC LIMIT 182208,48
С помощью него mysql отдает ответ за 3.1171 сек. Я чуть чуть подкорректировал его и привел к такому виду:
SELECT p.id, p.autor, p.date, p.short_story,
CHAR_LENGTH(p.full_story) as full_story,
p.xfields, p.title, p.category, p.alt_name,
p.comm_num, p.allow_comm, p.fixed, p.tags,
e.news_read, e.allow_rate, e.rating, e.vote_num,
e.votes, e.view_edit, e.editdate, e.editor, e.reason
FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id)
JOIN ( SELECT id
FROM dle_post
WHERE approve=1 AND allow_main=1
AND date < '2017-05-18 14:23:53'
ORDER BY date DESC LIMIT 182208,48
) as t ON t.id = p.id
Данный запрос отрабатывает за 1.3736 сек.
Подскажите пожалуйста, возможно ли еще как-то ускорить получение ответа?
Добавьте в сортировку поле dle_post.id и передавайте в запрос dle_post.id и dle_post.date из последней строки предыдущей выборки. Будет такой запрос:
SELECT p.id, p.autor, p.date, p.short_story,
CHAR_LENGTH(p.full_story) as full_story,
p.xfields, p.title, p.category, p.alt_name,
p.comm_num, p.allow_comm, p.fixed, p.tags,
e.news_read, e.allow_rate, e.rating, e.vote_num,
e.votes, e.view_edit, e.editdate, e.editor, e.reason
FROM dle_post p
LEFT JOIN dle_post_extras e ON (p.id=e.news_id)
WHERE approve=1
AND allow_main=1
AND (p.date < @last_date
OR
(p.date = @last_date
AND p.id = @last_id))
ORDER BY date DESC, id DESC
LIMIT 48;
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники