Anda di halaman 1dari 16

QUERYS

EL PRIMER PASO EN LA DEFINICION DE UN QUERY ES DEFINIR EL


GRUPO DE USUARIOS:
Herramientas / WorkBench ABAP.
Utilidades / Query ABAP / Grupos de usuarios.
Transaccion: SQ03.
El grupo de usuarios sirve para gestionar las autoriaciones de los
usuarios !AP.
"lick so#re "rear.
!olicita un nom#re.
"lick so#re el #oton Asignar Usuarios y areas $uncionales.
"olocar los nom#res de usuarios %ue integran el grupo.
El click a la derecha signi$ica %ue el usuario puede modi$icar el %uery&
pueden e'istir usuarios %ue solo lo usan.
Para Asignar area $uncional podemos usar una ya de$inida o crearnos una
para nosotros.
"lick so#re Asignar area $uncional.
!eleccionar el area $uncional deseada clickeando la casilla y luego click
so#re !alvar.
EL SEGUNDO PASO ES CREAR UN AREA FUNCIONAL:
Herramientas / WorkBench ABAP.
Utilidades / Query ABAP / Area $uncional.
Transaccion SQ02.
(igitar el nom#re del area $uncional
"lick so#re crear.
En denominacion colocar un comentario %ue lo descri#a.
)arcar so#re calculo de coma $i*a.
En ta#la / vista / estructura poner el nom#re de la ta#la.
Aceptar.
!i se %uiere mas de una ta#la hay %ue usar la opcion union de ta#las.
Aparecen a continuacion todos los campos de la ta#la %ue hemos
seleccionado.
!eleccionar los campos %ue voy a utiliar& esto los agrupara en un grupo
$uncional.
Ahora vamos a la parte superior del ar#ol donde dice grupo $uncional
+de#a*o del nom#re del area $uncional,
y hacemos click so#re el icono de la ho*a #lanca +crear, el icono
lapi es para modi$icarlo.
Aparece una ventana con dos campos& en el primero va un numero correlativo
de identi$icacion& en el segundo una descripcion #reve
(ar aceptar y al volver hacer click so#re el signo de menos %ue esta al
lado del nom#re del campo lo cual
lo selecciona.
"lick so#re el icono generar.
"lick so#re el icono gra#ar.
-olver.
Asignarlo al grupo de usuarios creado previamente con el #oton Asignar a
grupo de usuarios.
Hacer click so#re el grupo de usuarios deseados y gra#ar.
EL TERCER PASO ES CREAR EL QUERY EN SI MISMO:
Herramientas / WorkBench ABAP.
Utilidades / Query ABAP / Queries.
Transaccion SQ0.
Para elegir el grupo de usuarios click en icono "am#iar grupo de usuarios&
el icono mas a la i%uierda.
(arle un nom#re al %uery.
"lick so#re el #oton crear.
A continuacion aparece una ventana donde me permite asignarle un area
$uncional de las %ue estan asignada al grupo de usuarios seleccionado.
En el campo titulo se pone la descripcion del %uery.
En el campo lineas no pongas nada.
En el campo columnas se pone el ancho de salida en pantalla.
"lick so#re el icono imagen siguiente +./,& el de mas a la i%uierda.
!eleccionar so#re %ue grupo $uncional se va a #asar este %uery.
"lick so#re imagen siguiente +./,.
!elecciono los campos %ue vayan a participar en el %uery& ya sean de
seleccion o despliegue o consulta.
"lick so#re imagen siguiente +./,.
Aparece el su#titulo "ampos de seleccion so#re la lista de campos& se usan
para los $iltros
"lick so#re el #oton lista #asica.
Ahora seleccionar los campos %ue se van a desplegar.
)arcar separar columnas mediante 0.
En el campo linea selecciono si va a ser un reporte linea a linea o
multilinea& con 1 en todos van so#re
la misma linea o sino numeros correlativos para multilinea.
En el campo secuencia el orden de los campos a ser desplegados& cual va
primero& cual va despues& si no se le ponen valores a ninguno de estos
campos& el campo en cuestion no es desplegado.
En el campo clasi$icacion se determina cual de estos campos es clave&
cuanto mas #a*o el numero& mas importante
el indice& es decir si se pone 1 se ordena por ese campo& el %ue tiene
2 es el siguiente campo %ue se ordena& eso si& dentro de 1.
En total& si se trata de un campo %ue contenga valor acumula#le& se puede
seleccionar a%uellos %ue son sumariados.
El campo recuento acumula la cantidad de registros para ese campo.
"lick so#re imagen siguiente +./,.
Por de$ecto la ordenacion es ascendente& en el campo dist determino si la
ordenacion es descendente.
El campo total en esta pantalla permite determinar cual campo de los
criterios de ordenacion es el
guia de la sumariacion& es decir para cual se van a o#tener su#totales.
"lick so#re imagen siguiente +./,.
!e determina tipo de #arra de separacion.
"lick so#re imagen siguiente +./,.
!e puede determinar en esta pantalla colores& anchos de salida& etc.
"lick so#re imagen siguiente +./,.
A continuacion se determinan titulos y su#tilos so#re el reporte.
"lick so#re imagen siguiente +./,.
!i se hace click so#re visualiar disposicion +"3456.7, se puede ver el
aspecto %ue va teniendo el Query.
"on e*ecutar se puede e*ecutar el %uery en cual%uier momento +.8,.
(ar salvar.
E$iciencia en ABAP
1.1 9#*etivo
El o#*etivo %ue se persigue con estas recomendaciones es orientar y concienciar a los
desarrolladores de %ue ABAP presenta un con*unto de instrucciones reducido& pero con
muchas opciones o posi#ilidades de realiar una misma consulta o instrucci:n.
Es evidente %ue las me*oras en unos pocos milisegundos no son importantes
aisladamente& pero en muchos casos podremos aplicar estas me*oras en #ucles o rutinas
%ue se e*ecuten cientos de veces& lo %ue har; %ue estos milisegundos ahorrados se
multipli%uen.
Por regla general el rendimiento de los programas ABAP viene determinado en gran
parte por la <e$iciencia= de sus accesos a las Bases de (atos +B(,.
Para entender c:mo las sentencias !Q5 a$ectan a la e*ecuci:n de programas ABAP& es
necesario entender la ar%uitectura del sistema %ue hay por de#a*o. 5os procesos de
tra#a*o de un servidor de aplicaci:n est;n <conectados= al servidor de la B( como
usuarios +clientes, durante el tiempo %ue el sistema 4/7 est; activo. El gestor de la B(
+(ata (ase )anagement !ystem 6 (B)!, realia la cone'i:n entre usuarios y datos.
"ada sistema de B( utilia un optimiador cuya tarea es crear el plan de e*ecuci:n para
las sentencias !Q5 +por e*emplo determinar entre el uso de un >ndice en ve de leer en
la B(,. Hay dos tipos de optimiadores?
9ptimiadores #asados en la norma? analian la estructura de una sentencia !Q5 +las
partes !E5E"3 y WHE4E sin sus valores, y los >ndices. (espu@s usa un algoritmo para
calcular %u@ m@todo usar para e*ecutar la sentencia.
9ptimiadores #asados en el coste? usan el procedimiento anterior pero tam#i@n utilian
ta#las de estad>sticas. 5as ta#las de estad>sticas contienen los valores m;s #a*os y altos
de los campos& o un histograma con la distri#uci:n de los datos en la ta#la. Este tipo de
optimiadores me*oran el tiempo de acceso a las B(& pero tienen la desventa*a de %ue
las ta#las de estad>sticas necesitan actualiarse peri:dicamente.
+"onsultar Ane'o 7? <Aotas so#re las 3a#las de Estad>sticas=,
Aota? !AP #a*o 9racle permite el uso del optimiador #asado en coste a partir de la
release B.'. Anteriormente eran #asados en la norma.
1.2 4ecomendaciones Generales
1.2.1 "onsideraciones !AP6 ABAP
Ao actualiar AUA"A la #ase de datos directamente mediante $unciones no
desarrolladas u originales de !AP. Es decir& no utiliar nunca e'pl>citamente las
instrucciones CA!E43& UP(A3E& )9(C.D o (E5E3E so#re ta#las est;ndar de !AP.
(e#en utiliarse los procedimientos de actualiaci:n previstos por !AP como #atch6
input& direct input o call transaction.
En el caso de tener desarrollos propios %ue incluyan de$inici:n de ta#las propias %ue
crecen con el tiempo& tener previsto siempre la posi#ilidad de realiar un archivado de
los datos propios o en su de$ecto& eliminaci:n de datos o#soletos %ue no interesa seguir
teniendo en el sistema. +Aota? Ao es aconse*a#le acceder a datos de transacci:n s:lo con
datos maestros Epor e*emplo a pedidos de la ta#la -BAF s:lo con el nGmero de
cliente6& ya %ue siempre cogeremos m;s registros de los deseados. "onviene usar m;s
campos Epor e*emplo la $echa6 para limitar el resultado.
En el caso de utiliar programas e'ternos a !AP& como servidores 4." o clientes 4."
tener en consideraci:n al posi#ilidad de realiar #alanceo de carga
3ener en cuenta la concurrencia de accesos si se realian programas para actualiar
ta#las propias de$inidas por el cliente mediante la utiliaci:n de o#*etos de #lo%ueo.
5os accesos a la #ase de datos de#en evitar el realiar un H.ull 3a#le scanH de la misma.
5a programaci:n de la cl;usulas de acceso a la #ase de datos siempre de#en estar
#asadas en >ndices& o en casos especiales de conveniencia& realiar una lectura
secuencial de la ta#la. Pero si se %uiere acceder por >ndice hay %ue indicar en el
predicado de la cl;usula todos los campos del >ndice conocidos por el programa. Por
e*emplo? la ta#la -BAF de$inida con los campos? )AA(3 BE5A4 P9!A4 ...& y tiene
un >ndice primario construido as>? )AA(3& BE5A4 y P9!A4I si en la cl;usula
WHE4E no contiene el campo BE5A4& la B( no puede usar; el >ndice adecuadamente.
El con*unto de instrucciones con !Q5 nativo o EJE"6!Q5 no es conveniente de $orma
general ya %ue?
Ao utilian los #u$$ers intermedios de !AP
Pueden hacer la programaci:n dependiente del gestor de #ase de datos %ue se utilice.
En ocasiones puede ser la Gnica alternativa en caso de tener %ue acceder desde un
ABAP a una #ase de datos e'terna no6!AP& +por e*emplo acceso a una #ase de datos
9racle en A3 mediante 9(B",.
Al codi$icar #ucles& diseKarlos de $orma %ue las condiciones %ue m;s $recuentemente
sean verdaderas ocupen los niveles e'teriores del #ucle.
Para e'presiones o evaluaciones l:gicas %ue incluyan el operador AA(& situar la
condici:n %ue m;s $recuentemente sea $alsa en primer lugar.
3ener identi$icados de la manera m;s precisa y operativa posi#le cu;les son los
procesos %ue no de#en ser e*ecutados en concurrencia con el online o con los momentos
de mayor actividad online en el sistema. A modo de e*emplo normalmente la e*ecuci:n
de programas %ue realicen "A55 34AA!A"3C9A de $orma masiva o lanamiento de
#atch6inputs de#e estar limitada cuando se procesen de $orma concurrente con el on6
line.
1.2.2 Aormas generales para programaci:n !Q5
Bas;ndonos en la ar%uitectura de los sistemas 4/7& e'isten unas normas #;sicas y
$undamentales %ue es necesario aplicar en programaci:n ABAP para %ue los accesos a
las B( sean e$icientes. !on los siguientes?
"onseguir un con*unto de respuestas pe%ueKo.
Esto reduce? tanto la cantidad de memoria utiliada por el (B)! como la carga de la
red cuando se trans$ieren los datos al servidor de aplicaci:n. Por e*emplo no usar select
anidados sino L9CA! o -C!3A!.
)inimiar la cantidad de datos a trans$erir
4estringir el nGmero de l>neas
4estringir el nGmero de columnas.
Usar $unciones glo#ales +sum& average& minimun& ..., cuando los datos a usar sean s:lo
para c;lculos.
3rans$erir los datos e'actos cuando se cam#ien l>neas de una ta#la. "on la sentencia
UP(A3E para cam#iar l>neas& se de#er>a usar la cl;usula WHE4E para especi$icar las
l>neas relevantes y la sentencia !E3 para cam#iar s:lo las columnas necesarias.
)inimiar el nGmero de trans$erencias de datos
"onviene reducir la carga de la red y del servidor de la B( minimiando el nGmero de
veces %ue se accede a la B(?
Evitar accesos repetidos.
Evitar #ucles !E5E"3 anidados.
Usar -ieMs y Loins.
Evitar su#6preguntas en las cl;usulas WHE4E y HA-CAG.
Usar ta#las internas en #ucles !E5E"3.
Usar un cursor para leer los datos. Este nuevo m@todo se #asa en evitar la cl;usula
CA39 de la sentencia !E5E"3 utiliando un cursor +9PEA "U4!94, y leyendo los
datos l>nea a l>nea +.E3"H AEJ3 "U4!94,. Es necesario a#rir un nuevo cursor en
cada paso del #ucle.
)inimiar el tiempo de #Gs%ueda
.ormular condiciones de #Gs%ueda por >ndices.
Utiliar condiciones positivas +por e*emplo EQ y 5CFE, en ve de negativas +AE y
A93 5CFE,. Evitar el operador A93.
Ao che%uear por valores nulos +AU55,.
Ao usar parte de un >ndice? al construir un >ndice de varias columnas el sistema puede
usarlo aun%ue s:lo se especi$i%uen unas pocas columnas en la condici:n. 5a secuencia
de las columnas en el >ndice es importante. Una columna s:lo podr; usarse en la
consulta por >ndice si todas las columnas anteriores +en la de$inici:n del >ndice, se han
especi$icado tam#i@n en la condici:n de #Gs%ueda.
Evitar condiciones de #Gs%ueda comple*as
4educir la carga de la Bd
4ealiar el #u$$ering de ta#las so#re el servidor de aplicaci:n.
3ipos de ta#las m;s indicadas?
3a#las %ue se leen muy $recuentemente&
3a#las %ue cam#ian con muy poca $recuencia&
3a#las relativamente pe%ueKas +pocas l>neas& pocas columnas& columnas cortas,&
3a#las cuya actualiaci:n no es cr>tica en el tiempo. Por e*emplo ta#las de
parametriaci:n y ta#las de condiciones? AJJJ& BJJJ& "JJJ& etc.
Evitar la lectura repetida de los datos.
Usar Bases de (atos 5:gicas.
1.7 4ecomendaciones 3ips N 3ricks por !AP
Estas recomendaciones incluyen e*emplos reales& cuyo tiempo de respuesta puede ser
medido %ue pretenden ilustrar los aspectos comentados en el punto anterior.
Estas recomendaciones est;n localia#les en el sistema mediante?
Herramientas O Work#ench ABAP O 3est O An;lisis 3mpo. E*ecuci:n O 3ips N
3ricks
!e pretende indicar %ue e'isten herramientas en el sistema %ue nos pueden ayudar en
momentos de duda a elegir un algoritmo o con*unto de instrucciones m;s adecuado %ue
otro. !e e'trae una muestra a modo de e*emplo pero la lectura %ue de#e realiarse de
este apartado es %ue esta in$ormaci:n de#e ser consultada de $orma online en caso de
dudas o #Gs%ueda de sugerencias en el momento de realiar la programaci:n.
1.7.1 Cnstrucciones so#re la inter$a !AP6!Q5
En una cl;usula WHE4E& el operador l:gico A93 no est; soportado por los >ndices.
Por e*emplo?
WHE4E $echa PQ R1SSST212U es me*or %ue
WHE4E A93 .E"HA VQ R1SSST212
!entencias !E5E"3 con "HE"F. Especi$icar siempre %ue sea posi#le las condiciones
de selecci:n en la cl;usula WHE4E
"on la instrucci:n !E5E"3 utiliar lista de campos en ve de !E5E"3 W con el $in de
disminuir el tr;$ico en la red.
9#tenci:n de sumatorias& m;'imos& nGmero de $ilas& ... Utiliar operadores )AJ&
"9UA3& A-E4AGE en la lista de campos en ve de realiarlos por programa.
(isminuye el tr;$ico en la red.
!i se procesan los datos una sola ve& es pre$eri#le tratarlos en el #ucle !E5E"3 ...
EA(!E5E"3 %ue guardarlos en una ta#la interna para posteriormente tratar la ta#la
interna mediante 599P.
!E5E"3 mediante vistas. Es conveniente sustituir los selects anidados por el uso de
vistas.
!E5E"3 W .49) ((T1-
WHE4E (9)AA)E 5CFE H"HA4XH
AA( ((5AAGUAGE Q !D65AAGU.
EA(!E5E"3.
es pre$eri#le a ?
!E5E"3 W .49) ((T15
WHE4E (9)AA)E 5CFE H"HA4XH
AA( A!B59"A5 Q HAH.
!E5E"3 !CAG5E W .49) ((T13
WHE4E (9)AA)E Q ((T156(9)AA)E
AA( A!B59"A5 Q HAH
AA( A!B-E4! Q ((T156A!B-E4!
AA( ((5AAGUAGE Q !D65AAGU.
3ratamiento con arrays
Cnserciones con array y actualiaciones de columnas
CA!E43 "U!39)E4! .49) 3AB5E ita#
es pre$eri#le a ?
599P A3 3AB.
CA!E43 CA39 "U!39)E4! -A5UE! 3AB.
EA(599P.
Utiliar actualiaciones de columna en ve de modi$icaciones de $ila
UP(A3E !.5CGH3 !E3 !EA3!9"" Q !EA3!9"" 6 1.
es pre$eri#le a?
!E5E"3 W .49) !.5CGH3.
!.5CGH 36!EA3!9"" Q !.5CGH36!EA"!9"" 61.
UP(A3E !.5CGH3.
EA(!E5E"3.
Es pre$eri#le usar la sentencia !E5E"3 con opci:n CA39 %ue utiliar la sentencia
APPEA( dentro del #ucle !E5E"3 ... EA(!E5E"t
1.7.2 3ratamiento de cadenas de caracteres
Usar los operadores "9& "A& "!& etc& en lugar de programarlos. En strings largos& los
tiempos de "PU aumentan considera#lemente
Ao programar las sentencias para truncar strings o concatener& sino utiliar la
instrucci:n !P5C3 o "9A"A3EAA3E
1.7.7 3ratamiento de ta#las internas
!e recomienda el uso de la instrucci:n "955E"3 a partir de la release 7.T de !AP para
construcci:n de ta#las acumulativas.
Accesos por clave
4EA( 3AB5E 3AB WC3H FED F Q HJH BCAA4D !EA4"H es pre$eri#le a?
)9-E !PA"E 39 3AB.
3AB6F Q HJH.
4EA( 3AB5E 3AB BCAA4D !EA4"H.
Cntentar siempre acceder a una ta#la interna ya ordenada.
4EA( 3AB5E WC3H FED BCAA4D !EA4"H. es pre$eri#le a?
4EA( 3AB5E WC3H FED.
En 599P de ta#las utiliar la cl;usula WHE4E
599P A3 3AB WHE4E F Q F-A5.
.....
EA(599P es pre$eri#le a?
599P A3 3AB.
"HE"F 3AB6F Q F-A5
.....
EA(599P.
"onstrucci:n de ta#las ordenadas
Ao utiliar la instrucci:n APPEA( ita# !943E( BD
Utiliar el procedimiento de? 1Y 5lenar la ta#la& 2Y 9rdenar la ta#la
4E.4E!H 3ABZ(E!3.
599P A3 3ABZ!4".
APPEA( 3ABZ!4" 39 3ABZ(E!3.
EA(599P.
!943 3ABZ(E!3 BD F
es pre$eri#le a?
4E.4E!H 3ABZ(E!3.
599P A3 3ABZ!4".
4EA( 3AB5E 3ABZ(E!3 W33H FED FQ ....
CA!E43 3ABZ!4" CA39 3ABZ(E!3 CA(EJ !D6CA(EJ.
EA(599P.
"onstrucci:n de ta#la sin duplicados
Es pre$eri#le #orrar las entradas duplicadas una ve construida la ta#la utiliando el
procedimiento de 1Y 6 5lenar la ta#la& 2Y 9rdenar la ta#la& 7Y Borrar duplicados
4E.4E!H 3ABZ(E!3.
599P A3 3ABZ!4"
APPEA( 3ABZ!4" 39 3ABZ(E!3.
EA(599P
!943 3ABZ(E!3 BD F.
(E5E3E A(LA"EA3 (UP5C"A3E! .49) 3ABZ(E!3.
es pre$eri#le a?
4E.4E!H 3ABZ(E!3.
599P A3 3ABZ!4".
4EA( 3AB5E 3ABZ(E!3 WC3H FED FQ 3ABZ!4"6F.
C. !D6!UB4" VP T .
CA!E43 3ABZ!4" CA39 3ABZ(E!3 CA(EJ !D6CA(EJ.
EA(C..
EA(599P.
Uso de ;reas de tra#a*o evitando instrucciones )9-E
"opia de ta#las internas? utiliar asignaci:n directa de varia#les.
3ABZ(E!3[ \ Q 3ABZ!4"[ \ es pre$eri#le a ?
4E.4E!H 3ABZ(E!3.
599P A3 3ABZ!4" CA39 3ABZ(E!3.
APPEA( 3ABZ(E!3.
EA(599P.
"omparaci:n de ta#las internas? (os ta#las internas son iguales cuando tienen el mismo
nGmero de l>neas y coinciden una a una.
C. 3AB1[ \ Q 3AB2 [ \
EA(C..
Es pre$eri#le a realiar una #arrido secuencial de una ta#la e ir comparando con la
entrada e%uivalente en la otra ta#la.
Para ordenar ta#las internas& especi$icar los campos so#re los %ue de#e veri$icarse la
ordenaci:n.
!943 C3AB BD .CE5(1 .CE5(2. es pre$eri#le a?
!943 C3AB.
Para averiguar el nGmero de registros en una ta#la interna& utiliar la instrucci:n
(E!"4CBE 3AB5E C3AB 5CAE! "Z5CAEA!. es pre$eri#le a?
599P A3 C3AB.
"Z5CAEA! Q "Z5CAEA! ] 1
EA(599P.
L9CA de ta#las& #ucles anidados
Evitar recorridos secuenciales y plantearse accesos por >ndice en la segunda ta#la o
ta#la m;s interna del #ucle.
!uponiendo? ta#las ordenadas& 3AB2 contiene s:lo entradas %ue e'isten en 3AB1.
C2 Q 1.
599P A3 3AB1.
599P A3 3AB2 .49) C2.
C. 3AB26F VP 3AB16F.
C2 Q !D63ABCJ.
EJC3.
EA(C..
^ ...
EA(599P.
EA(599P.
es pre$eri#le a ?
599P A3 3AB1.
599P A3 3AB2 WHE4E F Q 3AB16F.
EA(599P.
EA(599P.
Cnserci:n en una ta#la desde otra
APPEA( 5CAE! 9. 3ABZ!4" 39 3ABZ(E!3. es pre$eri#le a?
599P A3 3ABZ!4".
APPEA( 3ABZ!4" 39 3ABZ(E!3.
EA(599P.
Borrado de l>neas.
Uso de >ndices para
(E5E3E 3ABZ(E!3 .49) B_T 39 __T. es pre$eri#le a?
(9 1T1 3C)E!.
(E5E3E 3ABZ(E!3 CA(EJ B_T.
EA((9.
(E5E3E 3ABZ(E!3 WHE4E F Q F-A5. Es pre$eri#le a?
599P A3 3ABZ(E!3 WHE4E F Q F-A5
(E5E3E 3ABZ(E!3
EA(599P
1.7.B 3ratamiento de par;metros en rutinas y $ield6sym#ols
Especi$icar el tipo de par;metros en las rutinas?
!i se especi$ica el tipo de los par;metros $ormales de las rutinas en el c:digo $uente del
programa& el compilador de ABAP/B puede optimiar me*or el $uente. Adem;s& el
riesgo de utiliar secuencias err:neas de par;metros disminuye.
(e$inir tipo en los $ield6sym#ols
!i se especi$ica el tipo del $ield6sym#ol& el compilador puede me*orar el rendimiento del
programa
.CE5(6!D)B95!? 3DPE C. Es pre$eri#le a?
.CE5(6!D)B95!? .
1.7._ )ane*o de varia#les y tipos
Utiliar varia#les de tipo C para campos >ndices de #ucle& no de tipo P.
!i los contenidos de las varia#les van a ser num@ricas& de$inirlas tipo C.
En las asignaciones utiliar constantes con tipo me*or %ue literales.
"9A!3AA3!?
PC 3DPE . -A5UE H7.1B1_S2/_7_8S`S72H.
(A3A?
.59A3 3DPE ..
.59A3 Q PC.
es pre$eri#le a?
(A3A?
.59A3 3DPE ..
.59A3 Q H7.1B1_S2/_7_8S`S72H.
En c;lculos aritm@ticos utiliar varia#les de tipo P.
(A3A?
P1 3DPE P -A5UE H127B_/`8ST127B_H&
P2 3DPE P -A5UE H_B721TS8`/_B721H&
P1 Q P1 ] P2.
es pre$eri#le a?
(A3A?
A1+1_, 3DPE A -A5UE H127B_/`8ST127B_H&
A2+1_, 3DPE A -A5UE H_B721TS8`/_B721H&
A1 Q A1 ] A2.
En c;lculos aritm@ticos no meclar varia#les de varios tipos a no ser a#solutamente
necesario& de esta $orma evitaremos innecesarias conversiones de tipos.
1.B E'posici:n de !entencias !Q5 <caras=
1.B.1 (e$inici:n
!e de$inen de esta manera a%uellas sentencias %ue?
(esde el punto de vista del usuario <el relo* de arena aparece en pantalla y permanece
ah> un largo tiempo=
(esde el punto de vista del sistema? este tiene %ue leer muchos #lo%ues de datos #ien
del #u$$er +supone una carga para el procesador,& o #ien del disco duro +lo %ue supone
una so#recarga para el sistema Cnput/9utput,.
1.B.2 3ipos
Para todas las B( y para todas las aplicaciones !AP y no6!AP& las sentencias !Q5
costosas pueden agotar los recursos del sistema operativo y causar graves pro#lemas de
rendimiento del sistema entero.
E'isten& #;sicamente& dos tipos de sentencias !Q5 llamadas <caras= teniendo en cuenta
el consumo de los recursos del sistema?
!EA3EA"CA! !Q5 "A4A! (E 3CP9 1?
!e procesan un gran nGmero de registros pero el rendimiento es #ueno.
)@todo de acceso adecuado
Por e*emplo? !Q5 3race? P 1T .etches por instrucci:n.
!EA3EA"CA! !Q5 "A4A! (E 3CP9 2?
!e procesa un nGmero pe%ueKo de registros pero hay un gran nGmero de lecturas por
registro o un elevado tiempo de respuesta por registro.
5a estrategia de #Gs%ueda no es e$iciente& el m@todo de acceso no es adecuado.
Por e*emplo?
Area de !Q5 compartida? P 1TT peticiones de #u$$er por registro
!Q5 3race? duraci:n de cada .etch P _TT ms.
5os datos %ue se necesitan para analiar sentencias !Q5 son?
Programas +para sa#er donde cam#iar el c:digo,.
!entencia !Q5 costosa.
3a#la implicada.
Cndice utiliado.
1.B.7 (etecci:n
5os tiempos de espera largos son el resultado del tiempo %ue emplea la B( en devolver
los datos pedidos por 4/7 y el %ue emplea 4/7 en devolver la siguiente pantalla al
usuario.
a":mo detectar las sentencias costosasb
Para encontrar el nom#re del report o transacci:n %ue usa la sentencia !Q5 se puede
utiliar?
3ransacci:n !)_T? -isualiaci:n de procesos de tra#a*o. +A partir de la ver. B./B
tam#i@n con la transacci:n !3TB,.
3ransacci:n !3T7? 4eporting de 3ransacciones& carga de tra#a*o del sistema. +-er m;s
adelante el punto /.2.B Workload )onitor,.
Para encontrar los nom#res de las ta#las accedidas y la sentencia !Q5?
3ransacci:n !3T_? <!%l 3race=.
3ransacci:n !3TB? Area !Q5 compartida& An;lisis de rendimiento de la B(.
3ransacci:n !)_T? -isualiaci:n de procesos de tra#a*o& anotamos el PC( del proceso
correspondiente y a continuaci:n vamos a la transacci:n !3TB?)onitor de procesos de
la B(.
Para encontrar los >ndices implicados& usar la opci:n EJP5ACA en?
!Q5 3race.
Area !Q5 compartida.
)onitor de proceso de la B(.
+-er Ane'o B <a(e (:nde procede la sentencia !Qb=,.
1.B.B "lasi$icaci:n
Analiando los dos tipos de sentencias a trav@s de !Q5 3race +transacci:n !3T_,
apreciamos?
Para el primer tipo el tiempo medio de duraci:n es de V _ ms por registro o V 1TT ms
por .E3"H. 5os datos se trans$ieren con un rendimiento :ptimo.
Para el segundo tipo la duraci:n de un .E3"H es P de _TT ms.
!i consultamos el Area !Q5 compartida +transacci:n !3TBI )enG de an;lisis detalladoI
Peticiones !Q5, para los dos tipos de sentencias anteriores& encontramos?
Para el tipo 1? V _T peticiones al #u$$er por registro. Esta es una relaci:n :ptima entre el
nGmero de registros procesados y el nGmero de #lo%ues de datos escaneados.
Para el tipo 2? P _T. Esta no es una relaci:n :ptima y es consecuencia de una estrategia
de #Gs%ueda de$iciente.
1.B._ !oluciones
Programas est;ndar de !AP?
!oluci:n ? "onsultar notas del 9!!.
!EA3EA"CA! (E5 3CP9 1?
Pro#lema ? (emasiados registros a trans$erir.
!oluci:n ? 4e6escri#ir el c:digo ABAP. +-er apartado 1.B.2 <Aormas Generales=,.
!EA3EA"CA! (E5 3CP9 2?
Pro#lema 1 ? Ao e'isten los >ndices adecuados.
!oluci:n ? "am#iar el c:digo? aKadir campos conocidos& etc.
"am#iar algGn >ndice e'istente& en ve de crear uno nuevo.
"rear un >ndice nuevo +analiar antes el histograma de distri#uci:n de
los datos con la transacci:n (BT_,.
Quitar un >ndice +especialmente en versiones 7.' de 9racle con
optimiadores en modo normas,.
9
Pro#lema 2 ? El 9ptimiador de la B( A9 usa el acceso correcto.
!oluci:n ? "he%uear la ta#la de estad>sticasI si la cl;usula
WHE4E es demasiado comple*a& re6escri#ir el c:digo

Anda mungkin juga menyukai