Que Tal, realice la siguiente consulta para obtener el catálogo de artículos por empresa.
El tema es que se supone que son las mismas tablas con los mismo joins, pero algunas empresas se tarda más que en otras, es decir, en algunas no tarda menos de 3 min y en otras tarda más de 20 min.
Mi pregunta es: ¿se puede optimizar más la consulta, teniendo en cuenta que algunos datos sólo es posible obtenerlos con un 'CASE' , a continuación muestra el query.
SELECT erp.displayproductnumber DYSPLAY_PRODUCT
,it.itemid CÓDIGO_ARTÍCULO
,erpt.name NOMBRE_ARTÍCULO
,it.namealias NOMBRE_BÚSQUEDA
,CASE ersdgi.storagedimensiongroup
WHEN '5637144576' THEN 'DIM01'
WHEN '5637144577' THEN 'DIM04'
END DIM_ALMACENAMIENTO
,CASE ersdgi.storagedimensiongroup
WHEN '5637144576' THEN 'SITIO-ALMACEN'
WHEN '5637144577' THEN 'SITIO-ALMACEN - LOCALIDAD'
END DESCRIPCIÓN_DIM_INV
,CASE ertdgi.trackingdimensiongroup
WHEN '5637144576' THEN 'AF'
WHEN '5637144577' THEN 'DIM07'
WHEN '5637144578' THEN 'DIM05'
WHEN '5637144579' THEN 'DIM06'
END DIM_SEGUIMIENTO
,CASE ertdgi.trackingdimensiongroup
WHEN '5637144576' THEN 'ACTIVO FIJO'
WHEN '5637144577' THEN 'LOTE'
WHEN '5637144578' THEN 'LOTE FINANCIERO'
WHEN '5637144579' THEN 'NO APLICA LOTE-SERIE'
END DESCRIPCIÓN_DIM_SEG
,imgi.modelgroupid GPO_MODELO_ART
,iigi.itemgroupid GPO_ART
,it.PdsShelfLife PERIODO_VIDA_UTIL_DÍAS
,CASE iisst.defaultordertype
WHEN '0' THEN 'ORDEN DE COMPRA'
WHEN '1' THEN 'PRODUCCIÓN'
END TIPO_ORDEN
,CAST ((ROUND(it.PmfYieldPct,0)) AS INT) PORCENTAJE_RENDIMIENTO
,CASE it.PmfProductType
WHEN '1' THEN 'CO-PRODUCTO'
WHEN '2' THEN 'PRODUCTO_DERIVADO'
WHEN '0' THEN 'NINGUNO'
WHEN '3' THEN 'ARTÍCULO_PLANIFICACIÓN'
WHEN '4' THEN 'L.MAT'
WHEN '5' THEN 'FORMULA'
END TIPO_PRODUCCIÓN
,CASE erp.ProductType
WHEN '1' THEN 'ARTÍCULO'
WHEN '2' THEN 'SERVICIO'
END TIPO_PRODUCTO
,it.bomunitid UNIDAD_LIST_MAT
,(SELECT itm.unitid
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 0
AND it.dataareaid = itm.dataareaid
) UNIDAD_INV
,(SELECT itm.taxitemgroupid
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 0
AND it.dataareaid = itm.dataareaid
) GPO_IMP_INV
,(SELECT itm.unitid
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 1
AND it.dataareaid = itm.dataareaid
) UNIDAD_COMPRA
,(SELECT itm.taxitemgroupid
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 1
AND it.dataareaid = itm.dataareaid
) GPO_IMP_COMPRA
,(SELECT itm.unitid
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 2
AND it.dataareaid = itm.dataareaid
) UNIDAD_VENTA
,(SELECT itm.taxitemgroupid
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 2
AND it.dataareaid = itm.dataareaid
) GPO_IMP_VENTA
,CASE it.costmodel
WHEN 0 THEN 'NO'
WHEN 1 THEN 'SÍ'
WHEN 255 THEN 'SÍ'
END ULTIMO_PRECIO_COSTO
,CASE it.purchmodel
WHEN 0 THEN 'NO'
WHEN 1 THEN 'SÍ'
WHEN 255 THEN 'SÍ'
END ULTIMO_PRECIO_COMPRA
,(SELECT CONVERT(FLOAT,ROUND(itm.underdeliverypct,2,1))
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 1
AND it.dataareaid = itm.dataareaid
) PERMITIDO_EXCESO
,(SELECT CONVERT(FLOAT,ROUND(itm.underdeliverypct,2,1))
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 1
AND it.dataareaid = itm.dataareaid
) PERMITIDO_NO_ENTREGADO
,erpt.languageid IDIOMA
,UPPER(it.dataareaid) EMPRESA
,(SELECT CONVERT(FLOAT,ROUND(itm.price,2,1))
FROM InventTableModule itm
WHERE it.itemid = itm.itemid
AND itm.moduletype = 0
AND it.dataareaid = itm.dataareaid
) PRECIO_COSTO
,it.itembuyergroupid GPO_COMPRADOR
,CASE erpc.category
WHEN '5637144577' THEN 'ACTIVO FIJO'
WHEN '5637144578' THEN 'AGROQUIMICO'
WHEN '5637144579' THEN 'AUTOMOTRIZ'
WHEN '5637146078' THEN 'BOTE HOJALATA'
WHEN '5637144580' THEN 'CAJA PLASTICO'
WHEN '5637144581' THEN 'CHAROLA CARTON'
WHEN '5637144582' THEN 'CHAROLA FOAM'
WHEN '5637144583' THEN 'CHAROLA RPET'
WHEN '5637144584' THEN 'COMBUSTIBLES'
WHEN '5637144576' THEN 'COMPRAS MB'
WHEN '5637144585' THEN 'COMPUTO'
WHEN '5637144586' THEN 'CONTRAINCENDIO'
WHEN '5637144587' THEN 'CORRUGADO'
WHEN '5637144588' THEN 'ELECTRICIDAD'
WHEN '5637144589' THEN 'ELECTRONICO'
WHEN '5637144590' THEN 'EQ MEDICION'
WHEN '5637144591' THEN 'EQ SEGURIDAD'
WHEN '5637144592' THEN 'ETIQUETA'
WHEN '5637144593' THEN 'FERRETERIA'
WHEN '5637144594' THEN 'FLETES'
WHEN '5637144595' THEN 'FORMATOS'
WHEN '5637144596' THEN 'FUMIGACION'
WHEN '5637144597' THEN 'HERRAMIENTA'
WHEN '5637144598' THEN 'IMPORTACION'
WHEN '5637144599' THEN 'INDUSTRIAL'
WHEN '5637144600' THEN 'INTERCOMPANIAS'
WHEN '5637144601' THEN 'LABORATORIO'
WHEN '5637144602' THEN 'LIMPIEZA'
WHEN '5637144603' THEN 'LUBRICANTES'
WHEN '5637144604' THEN 'MADERA'
WHEN '5637144605' THEN 'MAQUINADOS'
WHEN '5637144606' THEN 'MAQUINARIA'
WHEN '5637144607' THEN 'MEDICAMENTO'
WHEN '5637144608' THEN 'MOBILIARIO'
WHEN '5637144609' THEN 'OTROS ADMINISTRACION'
WHEN '5637144610' THEN 'OTROS EMPAQUE'
WHEN '5637144611' THEN 'OTROS MP'
WHEN '5637144612' THEN 'PAILERIA'
WHEN '5637144613' THEN 'PAJA'
WHEN '5637144614' THEN 'PAPELERIA'
WHEN '5637144615' THEN 'PEATMOSS'
WHEN '5637144616' THEN 'PINTURA'
WHEN '5637144617' THEN 'PLASTICO'
WHEN '5637144618' THEN 'POLLINAZA'
WHEN '5637145326' THEN 'PRODUCTO NUEVO'
WHEN '5637144619' THEN 'QUIMICOS'
WHEN '5637144620' THEN 'REFRIGERACION'
WHEN '5637144621' THEN 'SEGUROS'
WHEN '5637144622' THEN 'SEMILLA'
WHEN '5637144623' THEN 'SERVICIOS'
WHEN '5637146076' THEN 'TARIMA MADERA'
WHEN '5637144624' THEN 'UNIFORMES'
WHEN '5637146077' THEN 'VITAFILM'
END CATEGORÍA_COMRPAS
FROM InventTable it1 LEFT OUTER JOIN EcoResProductCategory erpc
ON it1.product = erpc.product
,EcoResProductTranslation erpt
,EcoResStorageDimensionGroupItem ersdgi
,EcoResTrackingDimensionGroupItem ertdgi
,InventModelGroupItem imgi
,InventItemGroupItem iigi
,InventTable it
,InventItemSetupSupplyType iisst
,EcoResProduct erp
WHERE 1 = 1
AND erpt.product = it.product
AND it.itemid = ersdgi.itemid
AND it.dataareaid = ersdgi.itemdataareaid
AND it.itemid = ertdgi.itemid
AND it.dataareaid = ertdgi.itemdataareaid
AND it.itemid = imgi.itemid
AND it.itemid = iigi.itemid
AND it.dataareaid = imgi.itemdataareaid
AND it.dataareaid = iigi.itemdataareaid
AND erp.recid = it.product
AND it1.product = it.product
AND it.itemid = iisst.itemid
AND iisst.itemid = ersdgi.itemid
AND iisst.itemid = ertdgi.itemid
AND it.dataareaid = iisst.itemdataareaid
AND ersdgi.itemdataareaid = iisst.itemdataareaid
AND ertdgi.itemdataareaid = iisst.itemdataareaid
AND iisst.itemid = imgi.itemid
AND iisst.itemid = iigi.itemid
AND it.dataareaid = 'MGA' -- BÚSQUEDA POR EMPRESA
--AND it.itemid LIKE 'Z%'-- BÚSQUEDA POR ARTÍCULO
--AND erpt.name LIKE '%POLLINAZA%'
--AND iigi.itemgroupid LIKE 'P%' -- BÚSQUEDA POR GRUPO DE ARTÍCULO
GROUP BY it.itemid
,erpt.name
,it.namealias
,storagedimensiongroup
,trackingdimensiongroup
,it.bomunitid
,imgi.modelgroupid
,it.dataareaid
,iigi.itemgroupid
,erp.displayproductnumber
,it.costmodel
,erp.producttype
,it.PmfYieldPct
,it.itembuyergroupid
,it.PdsShelfLife
,it.PmfProductType
,erp.ProductType
,it.purchmodel
,erpt.languageid
,erpc.category
,iisst.defaultordertype
ORDER BY 1
Adjuntos:
96-CATLOGO_ARTCULOS_V1.sql