Можно применить технику разового чтения главной сущности (аккордеон) постранично, а для сопутствующей информации опрашивать исходя из полученного набора с идентификаторами id.
Select ... from accordions
INNER JOIN city ...
Limit ?, ? /*смещение, количество*/
Select cities.id, ... from dilery
INNER JOIN city ...
Where cities.id in (список получен ранее)
И формируем результат на основе этих двух выборок.
Советую почитать про
Шаблон материализованного представления, который предлагает сделать это даже более оптимальным способом.
В сочетании с кэшированием дает хорошие результаты.