SQL: много от одного до многих. Кеширование? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть тип root, который имеет множество (10+) отношений один-ко-многим (каждое менее 20 вторичных), которые редко, если вообще обновляются.

Для большинства запросов к моей службе я должны возвращать разделенный запятыми список всех индексов, на которые ссылается тип.

Получение всех данных с помощью LEFT OUTER JOINs, а затем построение списка в моем приложении с этим занимает несколько секунд, что неприемлемо. Неудивительно, учитывая, что запросы теперь возвращают безумное количество строк.

Моя единственная идея для ускорения запросов - это кэширование списков для отношений в дополнительных столбцах моего типа или лучше в отдельной таблице. Таким образом, запросы всегда будут возвращать то же количество строк, что и таблица основного типа. Я бы установил триггеры для обновления списков в тех редких случаях, когда отношения обновляются (ужасная производительность в этих случаях не проблема).

Но и то, и другое, хранение данных несколько раз и сохранение сериализованных данных считается плохой практикой .

Есть варианты получше? Или моя идея разумна?

Также обратите внимание, что я работаю с sqlite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...