#1
|
|||
|
|||
Performance en select
Hola gente! como va? necesito la ayuda de ustedes urgente!!
Tengo que darle performance a estos select.. se puede? Este es uno.. SELECT b~werks c~vkorg c~vtweg a~pkunag a~pkunre a~spmon a~matnr c~fkart b~pstyv a~fkimg b~wavwr c~waerk b~kzwi3 b~kzwi1 a~sptag b~vbeln b~posnr INTO TABLE it_s900 FROM s900 AS a INNER JOIN vbrp AS b ON a~vbeln = b~vbeln AND a~posnr = b~posnr INNER JOIN vbrk AS c ON b~vbeln = c~vbeln FOR ALL ENTRIES IN it_ausp WHERE a~matnr EQ it_ausp-matnr AND a~pkunag IN s_pkunag AND a~pkunre IN s_pkunre AND a~fkart IN s_fkart AND a~waerk EQ p_waers AND a~sptag IN s_sptag AND b~pstyv IN s_pstyv AND c~vkorg IN s_vkorg AND c~vtweg IN s_vtweg AND c~bukrs EQ p_bukrs. SORT it_s900 BY werks vkorg vtweg pkunag pkunre spmon matnr fkart pstyv. ***************** Este es el otro... SELECT a~matnr a~mfrnr INTO TABLE it_mara FROM ( mara AS a INNER JOIN mvke AS b ON a~matnr = b~matnr ) WHERE a~matnr IN s_matnr " Material AND a~spart IN s_spart " Sector - Linea de Negocios AND a~extwg IN s_extwg " Autor AND a~mfrnr IN s_mfrnr " Editor AND a~profl IN s_profl " Tema AND b~mvgr3 IN s_mvgr3 " Sello Editorial AND b~vkorg IN s_vkorg " Organizacion de Ventas AND b~vtweg IN s_vtweg. " Canal de distribución SORT it_mara BY matnr. Desde ya se los voy a agradecer!!! |
#2
|
||||
|
||||
Hola, la segunda consulta la veo bien .. ya que MARA y MVKE estan jalandose de llaves principales, lo que si podria ayudar es que si con los parametros que ingresas puedas sacar algun canal de distribucion o una organizacion de ventas, y con respecto a la primera consulta tengo un problema con la tabla S900, supongo que es por la version, resulta que en la S900 no tengo los campos vbeln ni posnr, pero el JOIN entre cabecera (VBRK) y detalles (VBRP) si va bien ....
__________________
David Carballido Córdova |
#3
|
|||
|
|||
Buenos dias
Aqui van unas recomendaciones generales para SELECT 1.- Los inner join SIEMPRE deben ser por campos claves o campos indexados, es preferible meter algun tabla de mas pero que las uniones del join sean por campos clave o indexados 2.- El orden de las tablas en el join debe ser primero la que mas registros restringe, terminando por la que menos restringe de todas, por ejemplo en tu primer select probablemente la que mas restringe es la S900, luego la VBRK y luego la VBRP 3.- Los campos que se ponen en la clausula select (por ejemplo b~werks c~vkorg c~vtweg ... debes ponerlos en orden, suponiendo que haces el join primero por la S900 luego VBRK y luego VBRP tendrias que poner los campos que seleccionas por orden, todo esto que te digo tambien es aplicable para la clausula where 4.- En el primer select podrias ayudarte de las tablas indices standar que tiene SAP (en tu caso seria la VRPMA indice de facturas por material) en caso de que en la S900 los campos vbeln y posnr no sean claves |
#4
|
|||
|
|||
has una cosa mas..
de vez validar que la tabla it_ausp este llena.. sino vas a tener problemas y va tratar de buscar toda la infromacion de las demas tablas.. mucho ojo.. create una vista de visualizacion y me las tablas ... y cheque cuando se demora.. a mi me funciona bien. |
#5
|
|||
|
|||
gracias a todos por responder!
la it_ausp va a tener algun valor, por lo que puse la condicion de que si esta tabla llegara a ser initial, no hace el primer select. Voy a probar lo de la vista de visualizaciòn.. Me interesa lo de las tablas indice.. como se maneja en el programa? gracias! Úlima edición por mystic_soul fecha: 09/04/08 a las 17:56:57. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|