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 |
%_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 |
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
|
Muchas gracias por vuestra ayuda. Mañana probaré a ver que tal.
Saludos |
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!!!! |
Hola, prueba esta sentencia:
%_HINTS ORACLE 'INDEX ("LTAP" "LTAP~M")'. |
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 02:30:09. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web