返回首页


有人能告诉我,如果我是正确的吗?
或wich是最好的做法群集或不是集群
现在我有一个过程,其主要目标是比较5,4534,345行
相较于74000行
本的比较多一事不如少2小时..
但IM的损失。

这里是代码


---- THIS TEMP TABLE WILL SET : 5,453,345 ROWS



 

CREATE TABLE #int_registros_procesar_paso_2 (  id_registro_int int NOT NULL,

cod_ramo int NOT NULL,

cod_agente int NOT NULL,

cod_prefijo_company varchar(10) NOT NULL,

nro_pol_compania varchar(30),

nro_endoso_papel varchar(10),

CONSTRAINT PK_int_registros_procesar_paso_2 primary key clustered(cod_ramo asc,cod_agente asc,cod_prefijo_company asc,nro_pol_compania asc,nro_endoso_papel asc,id_registro_int asc)

)

ON [PRIMARY]

----HERE IS THE QUERY THAT FILL THE TEMP TABLE WITH 5,453,345 ROWS

INSERT INTO #int_registros_procesar_paso_2 

SELECT id_registro_int,cod_ramo,cod_agente,LTRIM(RTRIM(cod_prefijo_company)),

LTRIM(RTRIM(nro_pol_compania)),nro_endoso_papel 

FROM int_registros_procesar WITH(NOLOCK) 

WHERE cod_tipo_interface IN (1)

AND cod_ramo in (123) 

AND cod_grupo_endo=1

GROUP BY id_registro_int,cod_ramo,cod_agente,cod_prefijo_company,

         nro_pol_compania,nro_endoso_papel 

 

ORDER BY id_registro_int,cod_ramo,cod_agente,cod_prefijo_company,

         nro_pol_compania,nro_endoso_papel 


---这里是其中的数据进行比较
{C} 另一种方式来做到这一点?
提前感谢

忘记这一点。
所有上面显示的是里面的一个"while"循环
74000行被分配到@ PrefijoPapel与@ FolioPapel的
一个由一个

 

ALTER PROC [dbo].[sp_EMITIR_CANCELACION_AUTO_ASEGURADORA_NUSIS3_SHORT]

@Fecha1 as DateTime,

@Fecha2 as DateTime

AS

BEGIN

SET NOCOUNT ON;

			DECLARE @Prefijo as varchar(3)

			DECLARE @Registro as int

			DECLARE @Folio as int

			DECLARE @Vehiculo as int

			DECLARE @Endoso as int

			DECLARE @MovEndoso as int

			DECLARE @iCant as int

			DECLARE @FolioMinimoCan as integer

			DECLARE @FolioMaximoCan as integer

			DECLARE @FechaIniCan as DateTime

			DECLARE @FechaFinCan as DateTime

			DECLARE @Prefijo_web_cancelacion as varchar(3)

			DECLARE @Folio_Papel as varchar(40)

			DECLARE @TotalP as integer

			DECLARE @TipoCancelacion as int

			DECLARE @ImpPrimaCobertura as float

			DECLARE @ImpPrimaPolicyFee as float

			DECLARE @ImpPrimaAsistencia as float

			DECLARE @ComDerecho as Float

			DECLARE @ComPrima as Float

			DECLARE @ComAsistencia as Float

			DECLARE @TotalVehiculos as int

			DECLARE @Producto as varchar(10)

			DECLARE @PrefijoPapel as Varchar(5)

			DECLARE @FolioPapel as Varchar(30)

			DECLARE @EndosoPapel as smallint

			DECLARE @PrimaXVehiculo as Float

			DECLARE @ErrorValor as int

			DECLARE @MensajeError as varchar(500)

			SET @FechaIniCan = @Fecha1

			SET @FechaFinCan = @Fecha2

			SET @Prefijo_web_cancelacion = 'AXW'

			SET @iCant = 1

					

					

					

			---------INICIAMOS LA CREACION DE TABLAS TEMPORALES

			CREATE TABLE #EndCan

			(

				Prefijo varchar(5) NOT NULL,

				Poliza int NOT NULL,

				Fecha DateTime NOT NULL,

				Usuario int NULL,

				Motivo int NULL,

				Comentarios nvarchar(510) NULL,

				Monto_devolver money NULL,

				Identificador int NOT  NULL,

				Fecha_Cancelacion DateTime NULL,

				Tipo int NULL,

				Comision_prima money NULL,

				Comision_derecho money NULL,

				Endoso_Poliza int NOT Null,

				Monto_Endoso money NOT NULL,

				Derecho_P贸liza_devuelto money Null,

				COM_PRIMA float NULL,

				COM_DERECHO float NULL,

				Asistencia_devuelta Float NUll,

				CONSTRAINT PK_CancelacionesAutosNUIC primary key clustered(Prefijo asc,Poliza asc,Endoso_Poliza asc,Identificador asc)

			)

			ON [PRIMARY]

			--------------------------------------------------------------------------------------------------------------------------

			CREATE TABLE #PolizasCanceladas 

			(

				Prefijo varchar(5) NOT NULL,

				Folio int NOT NULL,

				Estado_de_Entrada varchar(4)  NULL,

				Motivo_de_Visita int NULL,

				Fecha_de_Inicio DateTime NOT NULL,

				Fecha_de_Emisi贸n DateTime NOT NULL,

				Hora_de_Inicio varchar(5)  NULL,

				Nombre varchar(100)  NULL,

				Calle varchar(70) NULL,

				Colonia varchar(50) NULL,

				C贸digo_Postal int NULL,

				Lada varchar(10) NULL,

				Tel茅fono varchar(20) NULL,

				Producto varchar(4) NULL,

				Estado varchar(2) NULL,

				Municipio varchar(50) NULL,

				Agente int NOT NULL,

				Prima money NULL,

				Derecho_de_P贸liza MONEY NULL,

			    Derecho_de_P贸liza_Original MONEY NULL,

				Asistencia MONEY NULL,

				Descuento FLOAT NULL,

				ExtraPrima MONEY NULL,

				Vigencia SMALLINT NULL,

				Fecha_de_Terminaci贸n DATETIME NULL,

				Comisi贸n_prima DECIMAL(4,2) NULL,

				Comisi贸n_derecho DECIMAL(4,2) NULL,

				Prefijo_papel VARCHAR(3),

				Folio_papel INT NULL,

				SubAgente INT NULL,

				Folio_papel_texto CHAR(20) NULL,

				CONSTRAINT PK_CanAutosNUIC primary key clustered(Prefijo asc,Folio asc,Agente asc)

			)

			ON [PRIMARY]

			-------------------------------------------------------------------------------------------------------------------------

			CREATE TABLE #VehiculoPolizaDetalles 

			(

				Prefijo varchar(5) NOT NULL,

				Folio int NOT NULL,

				A帽o int NOT NULL,

				Marca int NULL,

				Modelo varchar(255) NULL,

				N煤mero_de_Serie varchar(20) NULL,

				Placas varchar(15) NULL,

				Estado_de_las_Placas varchar(2) NULL,

				Remolque bit NULL,

				Prima MONEY NULL,

				Estado_de_Entrada varchar(2) NULL,

				DP_adicional Money NULL,

				Veh铆culo smallint NOT NULL,

				CONSTRAINT PK_CancelacionAutosNUIC primary key clustered(Prefijo asc,Folio asc,Veh铆culo asc)

			)

			ON [PRIMARY]

			-------------------------------------------------------------------------------------------------------------------------

			CREATE TABLE #int_registros_procesar_paso_2 (  id_registro_int int NOT NULL,

			cod_ramo int NOT NULL,

			cod_agente int NOT NULL,

			cod_prefijo_company varchar(10) NOT NULL,

			nro_pol_compania varchar(30),

			nro_endoso_papel varchar(10),

			CONSTRAINT PK_int_registros_procesar_paso_2 primary key clustered(cod_ramo asc,cod_agente asc,cod_prefijo_company asc,nro_pol_compania asc,nro_endoso_papel asc,id_registro_int asc)

			)

			ON [PRIMARY]

			-------------------------------------------------------------------------------------------------------------------------

			CREATE TABLE #pv_datos_adic_paso_cancelacion (id_pv int NOT NULL,

			nro_pol_extendido varchar(30) NOT NULL,

			nro_endoso_papel int NOT NULL,

			cod_ramo int NOT NULL,

			cod_agente int NOT NULL,

			CONSTRAINT PK_pv_datos_adic_paso_cancelacion primary key clustered(cod_ramo asc,cod_agente asc,nro_pol_extendido asc,nro_endoso_papel asc,id_pv asc)

			)

			ON [PRIMARY]

			-------------------------------------------------------------------------------------------------------------------------

			

			INSERT INTO #EndCan		

			SELECT	EC.Prefijo,

					EC.Poliza ,

					EC.Fecha,

					EC.Usuario ,

					EC.Motivo,

					EC.Comentarios ,

					EC.Monto_devolver,

					EC.Identificador,

					EC.Fecha_Cancelacion,

					EC.Tipo,

					EC.Comision_prima,

					EC.Comision_derecho,

					EC.Endoso_Poliza ,

					EC.Monto_Endoso,

					EC.Derecho_P贸liza_devuelto,

					EC.COM_PRIMA,

					EC.COM_DERECHO,

					EC.Asistencia_devuelta

			FROM NUSIS3.dbo.Endoso_Cancelacion EC

			WHERE EC.Fecha BETWEEN @FechaIniCan AND @FechaFinCan  AND Ec.Monto_Endoso > 0 

			AND EC.Fecha BETWEEN @FechaIniCan AND @FechaFinCan

			order by EC.Poliza,EC.identificador DESC

		

			INSERT INTO #PolizasCanceladas

			SELECT	SUBSTRING(Prefijo,1,3),

					Folio,

					SUBSTRING(Estado_de_Entrada,1,2),

					Motivo_de_Visita,

					Fecha_de_Inicio,

					Fecha_de_Emisi贸n,

					Hora_de_Inicio,

					SUBSTRING(Nombre,1,100),

					SUBSTRING(Calle,1,70),

					SUBSTRING(Colonia,1,50),

					C贸digo_Postal,

					SUBSTRING(Lada,1,5),

					SUBSTRING(Tel茅fono,1,20),

					SUBSTRING(Producto,1,4),

					SUBSTRING(Estado,1,2),

					SUBSTRING(Municipio,1,50),

					Agente,

					Prima,

					Derecho_de_P贸liza,

					Derecho_de_P贸liza_Original,

					Asistencia,

					Descuento,

					ExtraPrima,

					Vigencia,

					Fecha_de_Terminaci贸n,

					Comisi贸n_prima,

					Comisi贸n_derecho,

					Prefijo_papel,

					Folio_papel,

					SubAgente,

					Folio_papel_texto

    		FROM NUSIS3.dbo.PolizasParaCancelaciones

    		WHERE Prefijo=@Prefijo_web_cancelacion 

    		AND Folio in (SELECT DISTINCT Poliza FROM  NUSIS3.dbo.Endoso_Cancelacion EC WHERE Ec.Monto_Endoso > 0 

																					AND EC.Fecha BETWEEN @FechaIniCan AND @FechaFinCan)

    		

			INSERT INTO #VehiculoPolizaDetalles

      		SELECT	Prefijo ,

					Folio,

					A帽o,

					Marca,

					Modelo,

					N煤mero_de_Serie,

					Placas,

					Estado_de_las_Placas,

					Remolque,

					Prima,

					Estado_de_Entrada,

					DP_adicional,

					Veh铆culo

    		FROM NUSIS3.dbo.VehiculosParaCancelaciones

    		WHERE Prefijo=@Prefijo_web_cancelacion 

    		AND Folio in (SELECT DISTINCT Poliza FROM  NUSIS3.dbo.Endoso_Cancelacion EC WHERE Ec.Monto_Endoso > 0 

																					AND EC.Fecha BETWEEN @FechaIniCan AND @FechaFinCan)

    		

    		SELECT *

    		INTO #ConductorPolizaCan

    		FROM NUSIS3.dbo.ConductoresParaCancelaciones 

    		WHERE Prefijo=@Prefijo_web_cancelacion 

    		AND Folio in (SELECT DISTINCT Poliza FROM  NUSIS3.dbo.Endoso_Cancelacion EC WHERE Ec.Monto_Endoso > 0 

																					AND EC.Fecha BETWEEN @FechaIniCan AND @FechaFinCan)

			

			--SELECT *

			--INTO #VehiculoCancelacionAutos

			--FROM SQLMONTERREY.NUSIS.dbo.VehiculosCancelacionAuto_Proporcional WHERE Prefijo=@Prefijo_web_cancelacion 

			--AND Folio IN (SELECT Folio FROM #PolizasCanceladas)

			-----VehiculoCancelacionAutos

			SELECT *

			INTO #Marca

			FROM NUSIS3.dbo.Marca_de_Auto 

			WHERE Subtipo_de_producto=1 AND Exclusivo_National=0

			

			SELECT *

			INTO #ProductoNUICSISE

			FROM TPROD_NUICSISE	

			

			SELECT *

			INTO #ConductorFake

			FROM dbo.ConductorFake

						

 

			

			INSERT INTO #int_registros_procesar_paso_2 

			SELECT id_registro_int,cod_ramo,cod_agente,LTRIM(RTRIM(cod_prefijo_company)),LTRIM(RTRIM(nro_pol_compania)),nro_endoso_papel 

			FROM int_registros_procesar WITH(NOLOCK) 

			WHERE cod_tipo_interface IN (1)

			AND cod_ramo in (123) 

			AND fec_emision>='20110101'

			AND cod_grupo_endo=1

			GROUP BY id_registro_int,cod_ramo,cod_agente,cod_prefijo_company,nro_pol_compania,nro_endoso_papel

			ORDER BY id_registro_int,cod_ramo,cod_agente,cod_prefijo_company,nro_pol_compania,nro_endoso_papel 

 

			

			

 



			INSERT INTO #pv_datos_adic_paso_cancelacion

			SELECT ph.id_pv,pda.nro_pol_extendido,Isnull(nro_endoso_papel,0) as nro_endoso_papel,cod_ramo,cod_agente

			FROM pv_datos_adic pda WITH(NOLOCK), pv_header ph WITH(NOLOCK)

			WHERE ph.id_pv = pda.id_pv

			AND ph.cod_ramo in (123,125,126,127)   

			AND ph.fec_emi>='20110901'

			

					

						

			SELECT 'EMPIEZA LA EMISION'

			SELECT @TotalP=COUNT(Poliza) FROM #EndCan

			WHILE (@iCant<=@TotalP)

			BEGIN

-----CONSULTA SI POLIZA EXISTE----------------------------------------------

SELECT TOP 1 @Folio=ECT.Poliza FROM #EndCan ECT

SELECT TOP 1 @Endoso=Identificador,

@ImpPrimaCobertura=Monto_Endoso,@ImpPrimaPolicyFee=Derecho_P贸liza_Devuelto,@ImpPrimaAsistencia=Asistencia_Devuelta,

@ComPrima=Com_Prima,@ComDerecho=Com_Derecho,@EndosoPapel=Endoso_Poliza 

FROM #EndCan WHERE Prefijo=@Prefijo_web_cancelacion  

AND Poliza=@Folio AND Endoso_Poliza IS NOT NULL AND Identificador IS NOT NULL 

							

-------------------------------------------------------------------------------

SELECT  @Folio_Papel=cast(CONVERT(nvarchar(5),PA.Prefijo_Papel)+'-'+ CONVERT(nvarchar(20),PA.Folio_Papel_Texto) as nvarchar(50)),@Producto=PA.Producto,@PrefijoPapel=PA.Prefijo_Papel,@FolioPapel=PA.Folio_Papel_TextoFROM #PolizasCanceladas PA 

WHERE  PA.Prefijo=@Prefijo_web_cancelacion 

AND PA.Folio=@Folio

AND PA.Agente IS NOT NULL

							

SELECT @TotalVehiculos=count(1) FROM #VehiculoPolizaDetalles VP 

WHERE VP.Folio=@Folio 

AND VP.Prefijo=@Prefijo_web_cancelacion

AND VP.Veh铆culo IS NOT NULL

 

IF  EXISTS(SELECT 1 FROM #int_registros_procesar_paso_2 WITH(NOLOCK)

WHERE cod_ramo=123

AND cod_agente IS NOT NULL

AND cod_prefijo_company=LTRIM(RTRIM(@PrefijoPapel))--@PrefijoPapel='ABC' for example

AND nro_pol_compania=LTRIM(RTRIM(@FolioPapel)) --@FolioPapel='1234567' for example

AND nro_endoso_papel=0

AND id_registro_int IS NOT NULL)

BEGIN

上面显示的代码。当我创建并填写所有的tmp表。我认为,这是问题的一部分......
预先感谢

回答

评论会员: 时间:2