A-Lex[FM]
Web/Highload/DataScience
Оптимизация вложенного запроса.
Всем привет.
Вчера появился трабл со временем выполнения вложенного запроса.
имеем:
1. Таблица категорий ([int] id, [varchar] title)
2. Таблица данных ([int] id, [int] section_id, [varchar] title, [text] article)
(естественно id и category_id - индексные)
задача:
Выбрать последние записи в каждой категории. Структуру таблиц не менять.
моё решение:
[sql]
SELECT s.id, s.title AS section_title, g. *
FROM sections s
LEFT JOIN gdata g ON s.id = g.section_id
WHERE g.id
IN (
SELECT MAX( g1.id )
FROM sections s1
LEFT JOIN gdata g1 ON g1.section_id = s1.id
GROUP BY s1.id
)
ORDER BY s.id
[/sql]
появившаяся проблема:
запрос отрабатывает очень долго, после изменения данных в таблицах ~60 сек. После кэширования ~6 сек.
Собственно вопрос:
Как можно оптимизировать индексы и запрос, для увеличения скорости его выполнения.
Всем привет.
Вчера появился трабл со временем выполнения вложенного запроса.
имеем:
1. Таблица категорий ([int] id, [varchar] title)
2. Таблица данных ([int] id, [int] section_id, [varchar] title, [text] article)
(естественно id и category_id - индексные)
задача:
Выбрать последние записи в каждой категории. Структуру таблиц не менять.
моё решение:
[sql]
SELECT s.id, s.title AS section_title, g. *
FROM sections s
LEFT JOIN gdata g ON s.id = g.section_id
WHERE g.id
IN (
SELECT MAX( g1.id )
FROM sections s1
LEFT JOIN gdata g1 ON g1.section_id = s1.id
GROUP BY s1.id
)
ORDER BY s.id
[/sql]
появившаяся проблема:
запрос отрабатывает очень долго, после изменения данных в таблицах ~60 сек. После кэширования ~6 сек.
Собственно вопрос:
Как можно оптимизировать индексы и запрос, для увеличения скорости его выполнения.