Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Funcion lenta Oracle 9i

Estas en el tema de Funcion lenta Oracle 9i en el foro de Oracle en Foros del Web. Hola Amigos tegno una aplicacion web, Asp.Net, la qe consulta una tabla completa con 2200 registros, (Oracle 9i), en una grilla que esta paginada, pero ...
  #1 (permalink)  
Antiguo 23/01/2013, 06:44
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años
Puntos: 0
Funcion lenta Oracle 9i

Hola Amigos

tegno una aplicacion web, Asp.Net, la qe consulta una tabla completa con 2200 registros, (Oracle 9i), en una grilla que esta paginada, pero la funcion se demora 17 segundos, una eternidad.
La tabla esat indexsada, estoy muy comlicado por que se demora tanto, vengo de SQL server y esto nunca me paso antes,
alguna idea ??
  #2 (permalink)  
Antiguo 23/01/2013, 10:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Funcion lenta Oracle 9i

Cita:
alguna idea ??
Sí: Que nos muestres el código completo de esa función.

Como te podrás imaginar, si no vemos lo que hace y cómo lo hace, será difícil decirte cómo mejorar ese resultado...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/01/2013, 12:26
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años
Puntos: 0
Respuesta: Funcion lenta Oracle 9i

es un simple

"SELECT CAMPOS1, CAMPO2 CAMPO3 FROM MI_TABLA

where estado in ('ESTADO1','ESTADO2')" ;

y se demora un millon, sé que la tabla esta indexada, hice un select similar a otra tabla con ams registros y se demora menos que esta
:S
  #4 (permalink)  
Antiguo 23/01/2013, 12:56
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Funcion lenta Oracle 9i

No lo tomes a mal, Pero similar es que?

Un cambio a tu consulta por un campo, o un join o cualquier factor puede afectar el rendimiento de la misma.

La información que das es totalmente insuficiente para darte una respuesta.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 23/01/2013, 13:39
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años
Puntos: 0
Respuesta: Funcion lenta Oracle 9i

hice un select igual, con las mismas carecteristicas a otra tabla, sin inner join .
y se demra mucho menos que la tabla que quiero

de hecho con el select sin where se demora casi lo mismo.

:S

F1 !!
  #6 (permalink)  
Antiguo 23/01/2013, 17:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Funcion lenta Oracle 9i

O sea que lo que estás haciendo es un tablescan... Lo que es un

Dos preguntas:
1) En el primer post mencionas una función. ¿Es realmente una stored function, o estás hablando de otra cosa?
2) De qué tipo de datos es el campo "estado" y cómo está definido es eíndice.

Por favor, danos los datos copiados y pegados del código real. Las suposiciones, simulaciones o similitudes, no sirven.

Otra cosa que podrías aportar es un ejemplo de los datos reales que devuelve tu consulta.
A veces ayuda...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 24/01/2013, 06:53
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años
Puntos: 0
Respuesta: Funcion lenta Oracle 9i

la consultilla es tan simple,
Select campo1, campo2, campo3 FROM Mi_tabla
where tcsca_estado in ('NUEVO','PENDIENTE')

o

select * from Mi_tabla where ROWNUM > 0 and ROWNUM < 3000

y se demora casi lo mismo hasta 17 segundos, y la tabla solo tiene 2200 registros, lo que no comprendo por que la misma consulta a otra tabla es mas rapida siendo que tiene mas registros

y como vengo del SQL Server no estoy al tanto de todos los conceptos aun.

Mi funcion esta dentro de un Package, y no tengo Procedimientos Almacenados.
El campo 'estado' es un VARCHAR2, que obviamente esta mal.

Esto es lo que tengo como index:
Index Owner : xxx
Index Name : PK_TBL_CSXX_XX
uniqueness : UNIQUE
STATUS : VALID
INDEX TYPE : NORMAL
TEMPORARY : N
PARTITIONED : NO
FUNCTION INDEX STATUS : (NULL)
JOIN INDEX : NO
COLUMNS : TA_ID
COLUMN EXPRESSION : (NULL)
  #8 (permalink)  
Antiguo 24/01/2013, 07:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Funcion lenta Oracle 9i

Un package es un contenedor de stored functions y stored procedures, ergo, si tienes un package, tienes la función...
¿Tienes alguna restricción personal o empresarial para copiar y postear solamente ese código?

Por cierto, ese índice, ¿sobre qué columna de la tabla aplica? Porque si es un UNIQUE, francamente no creo que sea el índice de ese campo... ¿no es así?
Ten en cuenta que si quieres que el índice tenga impacto sobre la consulta, el índice debe ser necesitado por la consulta en alguna forma... y no parece ser el caso. Por ende, la indexación no está teniendo relevancia para la búsqueda y por eso genera un tablescan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 24/01/2013, 07:33
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años
Puntos: 0
Respuesta: Funcion lenta Oracle 9i

si, tengo restriccion de agregar datos o campos reales.

como la tabla tiene relativamente pocos registros, al consultar por alguno especifico es rapida, pero al traer toda la tabla, es una tortuga coja.
Ademas la aplicacion que stoy modificando no es muy veloz tampoco, pero erstoy haciendo otra interfaz que sea mas eficiente.
Abra otro metodo de sacar todos los registros de esa tabla???
  #10 (permalink)  
Antiguo 24/01/2013, 08:32
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Funcion lenta Oracle 9i

Me causa curiosidad que digas que la tabla tiene solo 2200 registros. Asi hablaramos de un full table scan esto se realizaría en 1 milisegundo y solo subiria unos cuantos bloques.

Ademas dices que esta dentro de un paquete, lo que me lleva a pensar que tal vez no sea problema de la consulta sino de lo que realiza el paquete.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 24/01/2013, 08:58
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años
Puntos: 0
Respuesta: Funcion lenta Oracle 9i

tendra algo diferente si dejo la funcion fuera del package o en otro package??
  #12 (permalink)  
Antiguo 24/01/2013, 09:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Funcion lenta Oracle 9i

Cita:
si, tengo restriccion de agregar datos o campos reales.
Lo que te pregunto es si puedes copiar y postear acá, en el Foro, el código...
Cita:
tendra algo diferente si dejo la funcion fuera del package o en otro package??
No debería, pero sin ver el package, no podemos a ciencia cierta saber si la función no está afectada por algo del mismo.
Si no posteas el código real, nos quedaremos haciendo especulaciones, sin llegar nunca a una solución.
Cita:
Ademas la aplicacion que stoy modificando no es muy veloz tampoco, pero erstoy haciendo otra interfaz que sea mas eficiente.
¿Y cómo has determinado que lo lento es la consulta, y no la aplicación y su interfaz de datos?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 24/01/2013 a las 11:14
  #13 (permalink)  
Antiguo 25/01/2013, 11:12
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Funcion lenta Oracle 9i

Puede ser que la tabla esté fragmentada.

Prueba a hacer un MOVE de la tabla y un REBUILD de los indices si hay y nos cuentas.
  #14 (permalink)  
Antiguo 28/01/2013, 10:00
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años
Puntos: 0
Respuesta: Funcion lenta Oracle 9i

Cita:
Iniciado por jc3000 Ver Mensaje
Puede ser que la tabla esté fragmentada.

Prueba a hacer un MOVE de la tabla y un REBUILD de los indices si hay y nos cuentas.
Aunqeu no he visto nada de eso, mañana se supone vera el problema un DBA, le comtare lo qeu me indicas

Ademas en la aplicacion encontre una mala disposicion de los datos, por no decir que vi una estupidez, unas iteraciones innecesarias que ya corregi. Est App no la ice yo. =)

Grax!!
  #15 (permalink)  
Antiguo 29/01/2013, 10:53
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años
Puntos: 0
Respuesta: Funcion lenta Oracle 9i

Amigos el DBA de me indico que la tabla esta normal y que no hay nada raro en la tabla.

La aplicacion consulta por todos los registros y los pagina, modificare la paginacion y con eso ya sera una consulta minima a la base

gracias por la ayuda.
sl2
  #16 (permalink)  
Antiguo 29/01/2013, 11:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Funcion lenta Oracle 9i

Me alegro que hayas encontrado un camino para solucionar tu problema, aunque me decepciona que en realidad jamás posteaste lo que te pedí.
Realmente me hubiese gustado saber si había algún defecto en las consultas reales que ese método utiliza.
Pero, bueno, como te digo, me alegro de que le encontraras una salida al inconveniente.

Suerte.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: funcion, lenta, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:48.