Rod*_*son 3 c# architecture linq-to-sql
我有两个数据库表subscription和transaction,其中一个订阅可以有多个事务。订阅的状态主要取决于属于它的事务。因此,如果我想计算下一个处理日期,我会查看订阅对象的 period 字段,然后分析订阅的事务以确定其状态。这一切正常。
我面临的问题是该表包含超过 400,000 个订阅对象和数百万条交易记录,因此构建订阅的报告摘要变得有点棘手(例如动态计算的大约十种可能状态中的每一种)
由于计算每个订阅状态的所有逻辑都在 c# 代码中,我必须使用 linq-to-sql 加载订阅对象的整个图及其所有子事务对象。这需要很长时间,也许两分钟左右。我正在研究缓存,但不会给出实时结果。我只是想知道是否有可以解决这个问题的策略,或者我的数据库上的索引可能会加快 linq 到 sql 查询的速度。或者,如果我只是从一开始就设计得很糟糕。
谢谢。
由于计算每个订阅状态的所有逻辑都在 c# 代码中,因此我必须加载订阅对象的整个图及其所有子事务
也许您不应该在客户端加载所有这些数据并逐行进行所有计算。这正是数据库真正擅长的。在服务器端进行计算,最好还是将计算存储在表中,然后在报告中查找。如果您有 40 万订阅和 +M 笔交易,那么您设计的基石是数据库,而不是客户端。您需要投入的时间和设计数据模型,并在客户端来后说。