MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Problema con indices de tablas (foro/showthread.php?t=29725)

uo4396 27/04/09 16:35:35

Problema con indices de tablas
 
Hola a todos,

Tenía dos dudas en relación a los índices. A ver si alguien me puede ayudar:

1- ¿ Como se yo cual es el índice que el optimizador está eligiendo a la hora de realizar una consulta ?

2- Como puedo hacer que una consulta a base de datos me elija el índice que yo quiero? Creo que se hacer insertando un hint en código pero no tengo ni idea de l que es ni de como implementarlo.

Muchas gracias a todos

zonanet 27/04/09 17:24:33

%_HINTS DB6 '<IXSCAN TABLE=''TABLA'' INDEX=''"TABLA~N"'' />'

donde
DB6 es tu base de datos.
TABLA es la tabla a la que haces la selección.
TABLA~N es el índice secundario que vas a utilizar.

Esta línea va al final de las condiciones del where.

Saludos

DavidXD_XD 27/04/09 19:15:19

Hola, la que se da el trabajo de elegir el indice mas optimo es la misma BD, prueba con esto, entra al debugg d tu programa en ejecucion, y cuando llegues a la linea donde realizar el SELECT antes de darle F5, vete a la ST05 y activa el trace, luego realizar el paso correspondiente en tu progama (F5), y luego regresas a la ST05 a desactivar el trace, ahi dale en Trace Display y veras el SELECT que realizaste, posicionate sobre la linea cuando hace OPEN (no sobre FECTH) y dale en el boton EXPLAIN, ahi veras la sentencia en nativo que ejecutaste y al mismo tiempo abajo aparecera la tabla de acceso y el indice que eligio la BD, para forzar a la BD que no eliga por nosotros el indice a su criterio haces uso de la prolongacion de sentencia SELECT que menciona Zonanet, espero te pueda ayudar :D

uo4396 27/04/09 20:30:34

Muchas gracias por vuestra ayuda. Mañana probaré a ver que tal.

Saludos

uo4396 28/04/09 09:05:30

Hola. He hecho lo que me habeis dicho pero el código no me compila:


SELECT ltak~tanum ltak~vbeln ltap~tapos ltap~nltyp ltap~pvqui
FROM ltak AS ltak INNER JOIN ltap AS ltap
ON ltak~tanum = ltap~tanum
AND ltak~lgnum = ltap~lgnum
INTO TABLE l_t_tanum_silo
WHERE ltap~lgnum EQ l_t_t346l-lgnum
AND ltap~pquit EQ ' '
AND ltak~lgnum EQ l_t_t346l-lgnum
AND ltak~kquit EQ ' '
AND ltak~queue EQ ip_queue.

%_HINTS DB2 '<IXSCAN TABLE="LTAP" INDEX="LTAP~M"/>'.

Me dice que la sentencia %_HINTS no está definida.

Saludos y a ver si me podeis ayudar!!!!

DavidXD_XD 28/04/09 13:36:15

Hola, prueba esta sentencia:

%_HINTS ORACLE 'INDEX ("LTAP" "LTAP~M")'.

zonanet 28/04/09 13:54:19



Te sobra un punto:

AND ltak~queue EQ ip_queue .

la línea es parte de la consulta, entonces es punto va al final de la misma.

saludos.


Husos Horarios son GMT. La hora en este momento es 16:05:56.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web