WITH CTE_GetKey AS ... rallentamento

mercoledì 03 marzo 2010 - 09.32

memmo77 Profilo | Expert

Nella mia stored o inserito il seguente codice:
.......
DECLARE @TMP_AFFCR_T_3_DIGIT_3 TABLE (AFFCR BIGINT, MESE SMALLINT, DIGIT SMALLINT, IMPORTO DECIMAL(24,12));

WITH CTE_GetKey AS
(
SELECT
AFFCR
FROM T_SSIS_RIT_114_005_SOFF_TRIM
WHERE
FK_ID_ENTE = @FK_ID_ENTE
AND ANNO = @FK_ANNO
AND MESE = @FK_MESE - 3
AND DIGIT = 2

EXCEPT

SELECT
AFFCR
FROM T_SSIS_RIT_114_005_SOFF_TRIM
WHERE
FK_ID_ENTE = @FK_ID_ENTE
AND ANNO = @FK_ANNO
AND MESE = @FK_MESE - 3
AND DIGIT < 2
GROUP BY AFFCR
)
INSERT INTO @TMP_AFFCR_T_3_DIGIT_3
SELECT
F.AFFCR
,F.MESE
,3 AS DIGIT
,IMPORTO
FROM T_SSIS_RIT_114_005_SOFF_TRIM AS F
JOIN CTE_GetKey AS CTE ON
F.AFFCR = CTE.AFFCR
WHERE
F.FK_ID_ENTE = @FK_ID_ENTE
AND F.ANNO = @FK_ANNO
AND MESE = @FK_MESE -3
ORDER BY
MESE ASC
,DIGIT ASC
......

Se la avvio da management in debug, funziona correttamente e velocemente (nemmeno un secondo). Se la avvio da "Esegui sotred procedure ..." passando i parametri necessari

USE [TASSO_DECADIMENTO]
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[SSIS_SOFF_RETTIFICATE_AFFCR]
@SYS_USER = N'c',
@FK_ID_ENTE = 5,
@FK_ANNO = 2007,
@FK_MESE = 3

SELECT 'Return Value' = @return_value

GO

, si pianta, comincia a girare e ci metti alcuni minuti, contro gli 0 secondi in debug.
Da cosa dipende?
Grazie

lbenaglia Profilo | Guru

>Se la avvio da management in debug, funziona correttamente e
>velocemente (nemmeno un secondo). Se la avvio da "Esegui sotred
>procedure ..." passando i parametri necessari, si pianta, comincia
>a girare e ci metti alcuni minuti, contro gli 0 secondi in debug.
>Da cosa dipende?
Confronta i piani di esecuzione e guarda in cosa differiscono...

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

memmo77 Profilo | Expert

Questa è la stored completa:




Ma come ti dicevo, si "pianta" sul primo WITH CTE_GetKey AS
Grazie ciao

lbenaglia Profilo | Guru

>Ma come ti dicevo, si "pianta" sul primo WITH CTE_GetKey AS
Eh, delle sp me ne faccio ben poco dato che non posso replicare il problema.
Confronta i piani di esecuzione e guarda in cosa differiscono...

>Grazie ciao
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

memmo77 Profilo | Expert

Scusa non conoscevo i piani di esecuzione . Te li metto in allegato, spero siano questi che intendevi.
Grazie

memmo77 Profilo | Expert

credo di aver risolto mettendo le chiavi sulla tabella.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5