У меня есть две таблицы базы данных, subscription
и transaction
, где в одной подписке может быть много транзакций. Статус подписки зависит в основном от транзакций, которые к ней относятся. Поэтому, если я хочу вычислить дату следующего процесса, я бы посмотрел на поле периода объекта подписки, а затем проанализировал транзакции подписки, чтобы определить ее статус. Это все отлично работает.
Проблема, с которой я сталкиваюсь, состоит в том, что таблица содержит более 400 000 объектов подписки и миллионы записей транзакций, поэтому довольно сложно создать сводный отчет по подпискам (например, сколько из каждого из примерно десяти возможных состояний, которые являются рассчитывается динамически)
Поскольку вся логика для расчета состояния каждой подписки находится в коде c #, я должен загрузить весь граф объектов подписки со всеми их дочерними объектами транзакций, используя linq-to-sql. Это занимает довольно много времени, может быть, две минуты или около того. Я смотрю на кеширование, но не буду давать результаты в реальном времени. Мне просто интересно, есть ли стратегия, которая могла бы решить эту проблему, или, может быть, индекс в моей базе данных, который может ускорить запрос linq to sql. Или, если бы я просто придумал это с самого начала.
Спасибо.