我知道这听起来应该被标记为家庭作业,但我真的需要帮助。
此程序
OPEN @Iterador
FETCH NEXT FROM @Iterador INTO @GrupoMedidas
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @Resultado(GrupoMedidas
, TextoPregunta
, ANTERIOR
, ENERO
, FEBRERO
, MARZO
, ABRIL
, MAYO
, JUNIO
, JULIO
, AGOSTO
, SEPTIEMBRE
, OCTUBRE
, NOVIEMBRE
, DICIEMBRE)
SELECT @GrupoMedidas
, TextoPregunta
, ANTERIOR
, ENERO
, FEBRERO
, MARZO
, ABRIL
, MAYO
, JUNIO
, JULIO
, AGOSTO
, SEPTIEMBRE
, OCTUBRE
, NOVIEMBRE
, DICIEMBRE
FROM [dbo].[FRespuestasGrupo](@Anio, @GrupoMedidas)
FETCH NEXT FROM @Iterador INTO @GrupoMedidas
END
在相对较小的数据库上运行需要38秒。我已经读过,游标在陆地或RDBMS系统中绝对是邪恶的,并且出于性能原因应该避免使用游标,但是我不能 - 为了我的生活 - 想象一种方法来减少光标的使用。< / p>
这个程序现在正在实现的目标(痛苦地缓慢)是将问题集(@GrupoMedidas)与每个问题配对,这样决赛桌中的每一行都会像
一样结束。Question-Set-Name|Question-Name-1|Answer-For-January|Answer-For-February...
Question-Set-Name|Question-Name-2|Answer-For-January|Answer-For-February...
(表格架构以西班牙语列出)
FRespuestasGrupo负责列出给定问题集的所有问题,并提供作为参数提供的年度中每个月的答案。
此查询中涉及的所有其他过程已经从游标中删除,所以这是我现在的最后希望。