Tenho 2 tabelas com mais de 50 mil e mais de 10 mil linhas
Mesachapter
id (auto_inc) | chapter_id | story_id | date (timestamp)
1 | 1 | 1 | 1715830560
...
10 | 10 | 1 | 1715830570 <- latest chapter of story #1
100 | 1 | 2 | 1715830560
...
111 | 11 | 2 | 1715830570 <- latest chapter of story #2
200 | 1 | 3 | 1715830560
...
211 | 21 | 3 | 1715830570 <- latest chapter of story #3
Mesastory
id (auto_inc) | slug | title | date (timestamp)
1 | slug-1 | title 1 | 1715830560
...
100 | slug-100 | tit 100 | 1715830580 <- consider this is latest story
Usei o comando abaixo para obter o último capítulo exclusivo de cada história
SELECT C.id, MAX(C.chapter_id), C.story_id, C.title AS title_chapter, C.summary
FROM `chapter` C
GROUP by C.story_id
ORDER by C.id DESC
LiMIT 10;
Ele mostra com sucesso as 10 histórias únicas com seus capítulos, mas sempre escolhe os capítulos pela história mais recente, ou seja, sempre escolhe as histórias mais recentes primeiro e depois escolhe os capítulos mais recentes para cada história; o resultado é como abaixo:
id | chapter_id | story_id (↓) | date (timestamp)
205 | 5 | 100 | 1715830560 <- 205 is latest chapter of story #100
108 | 8 | 99 | 1715830560 <- ..
8 | 8 | 98 | 1715830560 <- ..
Mas eu quero o capítulo mais recente classificado por id, ou seja, o capítulo mais recente das histórias, não as histórias mais recentes com capítulo, o resultado é como abaixo:
id (↓) | chapter_id (latest of each story) | story_id (unique) | date (timestamp)
508 | 15 | 75 | 10
507 | 35 | 95 | 9
506 | 5 | 15 | 8
505 | 15 | 100 | 8
504 | 35 | 99 | 8
E por favor, sugira-me a solução (melhor desempenho com tempo mínimo de processamento) para obter o título e o slug da story
tabela para esses últimos capítulos.
Muito obrigado pelo conselho.