业务背景:系统中有 n 家门店,门店中有 n 台设备,设备上的广告尺寸不一且有多个。投放广告时需指定广告播放时长以秒为单位,且需指定播放时间区间某年某月某日某时 至 某年某月某日某时,设备在同一时刻所有广告可用的总播放时长固定,同一设备所有广告尺寸共用总时长。
需求:广告投放前需对要投放的店铺进行筛选,输入广告时长 s 秒以及播放时间区间 d1h1-d2h2,输出该播放时间区间内符合投放要求的店铺及该店铺可投放的广告尺寸及设备数。
目前的方式是动态计算,每次都在数据库中求:固定总播放时长-该时间区间内每台设备广告总时长>预播放时长的设备,然后将设备按门店统计得到门店可投设备数,过滤没有可投设备的门店,在去重门店中可投设备的广告尺寸,拼起来得到最终结果。这里面还需要处理分页。
这种方式大量的在数据库中连表统计查询,性能差的不行,所以想能不能预先算好广告库存,用的时候直接查广告库存表,走这种方案的话广告库存表该如何设计?还是说有其他方案。