У меня есть тип root, который имеет множество (10+) отношений один-ко-многим (каждое менее 20 вторичных), которые редко, если вообще обновляются.
Для большинства запросов к моей службе я должны возвращать разделенный запятыми список всех индексов, на которые ссылается тип.
Получение всех данных с помощью LEFT OUTER JOINs, а затем построение списка в моем приложении с этим занимает несколько секунд, что неприемлемо. Неудивительно, учитывая, что запросы теперь возвращают безумное количество строк.
Моя единственная идея для ускорения запросов - это кэширование списков для отношений в дополнительных столбцах моего типа или лучше в отдельной таблице. Таким образом, запросы всегда будут возвращать то же количество строк, что и таблица основного типа. Я бы установил триггеры для обновления списков в тех редких случаях, когда отношения обновляются (ужасная производительность в этих случаях не проблема).
Но и то, и другое, хранение данных несколько раз и сохранение сериализованных данных считается плохой практикой .
Есть варианты получше? Или моя идея разумна?
Также обратите внимание, что я работаю с sqlite.