我在保险公司工作并创建自定义应用程序。当我们对策略应用coverage时,它将存储在具有Limit,Deductible和Premium字段的表中。但是,有许多覆盖范围不符合规范。它们使用Limit,Deductible和Premium的不同字段,甚至存储在不同的表中。 (不要问为什么,甚至不试图理解他们仍在这样做的事实,所以我需要留下逻辑以允许这样的额外覆盖。)他们选择的字段也没有押韵或理由漂浮不定。
因此,我们决定创建“LookUp”表,这些表将存储覆盖所需的所有信息。这避免了许多连接 - 我们遇到了应用程序的速度和性能问题。
我需要找到一种方法将所有这些字段预先填充到表格中。我希望性能方面的最佳选择。这将最终成为一个夜间工作 - 所以当我们收到新的数据快照时,我们将运行此查询并预填充/更新表的值。
我有以下代码,我为每个政策循环使用这个代码,每晚大约614,000次...需要很长时间才能运行。
我有更好的方法吗?
SELECT @SQL = N'SELECT @Limit=' + ISNULL(Limit, '''''') + N',@Deductible=' + ISNULL(Deductible, '''''') + N',@Premium=' + ISNULL(Premium, '''''') + N' FROM PHI_PIJ.dbo.ASBYCPP' + N' WHERE ' + PolicyNum + N' = ''' + @PolicyKey +'''' + N' AND BYAOTX' + N'='''+Coverage +''''
FROM PolicySummary.dbo.Coverage
WHERE Coverage = @Coverage
AND LOB = 'BOP'
EXEC sp_executesql @SQL, N'@Limit nVarChar(255) output,@Deductible nVarChar(255) output,@Premium nVarChar(255) output', @Limit output, @Deductible output, @Premium output
UPDATE PolicySummary.dbo.CoverageLkup
SET Limit = @Limit, Deductible = @Deductible, Premium = @Premium
WHERE CovAbbrev = @Coverage
AND PolicyKey = @PolicyKey
这是我的While循环中的内容:
SELECT @SQL = N'SELECT @Limit=' + ISNULL(Limit, '''''') + N',@Deductible=' + ISNULL(Deductible, '''''') + N',@Premium=' + ISNULL(Premium, '''''') + N' FROM PHI_PIJ.dbo.' + [File] + N' WHERE ' + PolicyNum + N' = ''' + @PolNum +'''' + N' AND ' + @CovField + N'='''+Coverage +''''
FROM PolicySummary.dbo.Coverage
WHERE Coverage = @Coverage
AND LOB = @LOB
EXEC sp_executesql @SQL, N'@Limit nVarChar(255) output,@Deductible nVarChar(255) output,@Premium nVarChar(255) output', @Limit output, @Deductible output, @Premium output
INSERT INTO #OptCov2 VALUES(@Coverage, @Description, @LOB, @Limit, @Deductible, @Premium)