bibi92
asked on
optimize delete statement
Hello,
How can I optimize this delete statement. The table estimation_du_moins contains 200000000 rows :
USE TBA_VCF_V2_VCGP
declare @doIdAsupp int
set @doIdAsupp = 3 -- 1,2,3,4,5,6,9
-- TBA
declare @temp_tba table (id int)
insert into @temp_tba
SELECT TBA_AFFAIRE.AFF_ID
FROM TBA_AFFAIRE
INNER JOIN dbo.SYN_PMG_CP ON TBA_AFFAIRE.CP_ID = dbo.SYN_PMG_CP.CP_ID
INNER JOIN dbo.SYN_PMG_DA ON dbo.SYN_PMG_CP.DA_ID = dbo.SYN_PMG_DA.DA_ID
INNER JOIN dbo.SYN_PMG_DR ON dbo.SYN_PMG_DA.DR_ID = dbo.SYN_PMG_DR.DR_ID
INNER JOIN dbo.SYN_PMG_DD ON dbo.SYN_PMG_DR.DD_ID = dbo.SYN_PMG_DD.DD_ID
INNER JOIN dbo.SYN_PMG_DO ON dbo.SYN_PMG_DD.DO_ID = dbo.SYN_PMG_DO.DO_ID
WHERE dbo.SYN_PMG_DO.DO_ID = @doIdAsupp
--SELECT AFF_ID FROM dbo.TBA_AFFAIRE WHERE AFF_ID IN (select id from @temp_tba)
-- Clean TBA_ESTIMATION_DU_MOIS
BEGIN TRAN
DELETE dbo.TBA_ESTIMATION_DU_MOIS
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_PREVISION_PERIODE
BEGIN TRAN
DELETE dbo.TBA_PREVISION_PERIODE
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_STADE_AFFAIRE_PERIODE
BEGIN TRAN
DELETE dbo.TBA_STADE_AFFAIRE_PERI ODE
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_FIN_AFFAIRE_CPLT
BEGIN TRAN
DELETE dbo.TBA_FIN_AFFAIRE_CPLT
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_FIN_AFFAIRE
BEGIN TRAN
DELETE dbo.TBA_FIN_AFFAIRE
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
---- Clean TBA_INDIC_FI
BEGIN TRAN
DELETE dbo.TBA_INDIC_FI
WHERE CI_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_AFFAIRE
BEGIN TRAN
DELETE dbo.TBA_AFFAIRE
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- SII
declare @temp_sii table (id int)
insert into @temp_sii
SELECT SII_MONTANT.SII_ID
FROM SII_MONTANT
INNER JOIN dbo.SYN_PMG_CP ON SII_MONTANT.CP_ID = dbo.SYN_PMG_CP.CP_ID
INNER JOIN dbo.SYN_PMG_DA ON dbo.SYN_PMG_CP.DA_ID = dbo.SYN_PMG_DA.DA_ID
INNER JOIN dbo.SYN_PMG_DR ON dbo.SYN_PMG_DA.DR_ID = dbo.SYN_PMG_DR.DR_ID
INNER JOIN dbo.SYN_PMG_DD ON dbo.SYN_PMG_DR.DD_ID = dbo.SYN_PMG_DD.DD_ID
INNER JOIN dbo.SYN_PMG_DO ON dbo.SYN_PMG_DD.DO_ID = dbo.SYN_PMG_DO.DO_ID
WHERE dbo.SYN_PMG_DO.DO_ID = @doIdAsupp
--SELECT SII_ID FROM dbo.SII_MONTANT WHERE SII_ID IN (select id from @temp_sii)
-- Clean SII_MONTANT
BEGIN TRAN
DELETE dbo.SII_MONTANT
WHERE SII_ID IN (select id from @temp_sii)
COMMIT TRAN
Thanks
Bibi
How can I optimize this delete statement. The table estimation_du_moins contains 200000000 rows :
USE TBA_VCF_V2_VCGP
declare @doIdAsupp int
set @doIdAsupp = 3 -- 1,2,3,4,5,6,9
-- TBA
declare @temp_tba table (id int)
insert into @temp_tba
SELECT TBA_AFFAIRE.AFF_ID
FROM TBA_AFFAIRE
INNER JOIN dbo.SYN_PMG_CP ON TBA_AFFAIRE.CP_ID = dbo.SYN_PMG_CP.CP_ID
INNER JOIN dbo.SYN_PMG_DA ON dbo.SYN_PMG_CP.DA_ID = dbo.SYN_PMG_DA.DA_ID
INNER JOIN dbo.SYN_PMG_DR ON dbo.SYN_PMG_DA.DR_ID = dbo.SYN_PMG_DR.DR_ID
INNER JOIN dbo.SYN_PMG_DD ON dbo.SYN_PMG_DR.DD_ID = dbo.SYN_PMG_DD.DD_ID
INNER JOIN dbo.SYN_PMG_DO ON dbo.SYN_PMG_DD.DO_ID = dbo.SYN_PMG_DO.DO_ID
WHERE dbo.SYN_PMG_DO.DO_ID = @doIdAsupp
--SELECT AFF_ID FROM dbo.TBA_AFFAIRE WHERE AFF_ID IN (select id from @temp_tba)
-- Clean TBA_ESTIMATION_DU_MOIS
BEGIN TRAN
DELETE dbo.TBA_ESTIMATION_DU_MOIS
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_PREVISION_PERIODE
BEGIN TRAN
DELETE dbo.TBA_PREVISION_PERIODE
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_STADE_AFFAIRE_PERIODE
BEGIN TRAN
DELETE dbo.TBA_STADE_AFFAIRE_PERI
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_FIN_AFFAIRE_CPLT
BEGIN TRAN
DELETE dbo.TBA_FIN_AFFAIRE_CPLT
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_FIN_AFFAIRE
BEGIN TRAN
DELETE dbo.TBA_FIN_AFFAIRE
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
---- Clean TBA_INDIC_FI
BEGIN TRAN
DELETE dbo.TBA_INDIC_FI
WHERE CI_ID IN (select id from @temp_tba)
COMMIT TRAN
-- Clean TBA_AFFAIRE
BEGIN TRAN
DELETE dbo.TBA_AFFAIRE
WHERE AFF_ID IN (select id from @temp_tba)
COMMIT TRAN
-- SII
declare @temp_sii table (id int)
insert into @temp_sii
SELECT SII_MONTANT.SII_ID
FROM SII_MONTANT
INNER JOIN dbo.SYN_PMG_CP ON SII_MONTANT.CP_ID = dbo.SYN_PMG_CP.CP_ID
INNER JOIN dbo.SYN_PMG_DA ON dbo.SYN_PMG_CP.DA_ID = dbo.SYN_PMG_DA.DA_ID
INNER JOIN dbo.SYN_PMG_DR ON dbo.SYN_PMG_DA.DR_ID = dbo.SYN_PMG_DR.DR_ID
INNER JOIN dbo.SYN_PMG_DD ON dbo.SYN_PMG_DR.DD_ID = dbo.SYN_PMG_DD.DD_ID
INNER JOIN dbo.SYN_PMG_DO ON dbo.SYN_PMG_DD.DO_ID = dbo.SYN_PMG_DO.DO_ID
WHERE dbo.SYN_PMG_DO.DO_ID = @doIdAsupp
--SELECT SII_ID FROM dbo.SII_MONTANT WHERE SII_ID IN (select id from @temp_sii)
-- Clean SII_MONTANT
BEGIN TRAN
DELETE dbo.SII_MONTANT
WHERE SII_ID IN (select id from @temp_sii)
COMMIT TRAN
Thanks
Bibi
ASKER
Hello,
Thanks, but it's the same thing.
Regards
Bibi
Thanks, but it's the same thing.
Regards
Bibi
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks a lot
Open in new window