Query lenta

 Muy buenas! tengo un problema con unas consultas que al ejecutarlas tarda bastante en mostrar el resultado . Algunas de esas columnas tienen sus indices asignados. Pruebo a hacer la consulta de tres modos diferentes pero funciona de igual lentitud.

  select "msisdn", "status", "optin_date", "optout_date",   (trunc("optout_date")-trunc("optin_date")) as "life" from "subscriber" where "status" = 0 union all select "msisdn", "status", "optin_date", "optout_date",   (trunc(sysdate)-trunc("optin_date")) as "life" from "subscriber" where "status" = 1;     select "msisdn", "status", "optin_date", "optout_date",  case "status" when 0 then (trunc("optout_date")-trunc("optin_date")) when 1 then (trunc(sysdate)-trunc("optin_date")) end as "life" from "subscriber";   select "msisdn", "status", "optin_date", "optout_date",  decode ("status", 0 , (trunc("optout_date")-trunc("optin_date")) ,     1 , (trunc(sysdate)-trunc("optin_date")) ) as "life" from "subscriber";     esta es la tabla (subscriber):     Name                                                                                                                                                                             Null?    Type  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  id                                                                                                                                                                               NOT NULL NUMBER(11)  id_user                                                                                                                                                                          NOT NULL NUMBER(11)  id_service                                                                                                                                                                       NOT NULL NUMBER(11)  msisdn                                                                                                                                                                           NOT NULL NUMBER(20)  nextbill                                                                                                                                                                         NOT NULL DATE  credits                                                                                                                                                                          NOT NULL NUMBER(11)  failed_trys                                                                                                                                                                      NOT NULL NUMBER(11)  last_attempt                                                                                                                                                                      DATE  status                                                                                                                                                                           NOT NULL NUMBER(4)  optin_date                                                                                                                                                                       NOT NULL DATE  optout_date                                                                                                                                                                       DATE  id_source                                                                                                                                                                      NOT NULL NUMBER(11)  id_campaign                                                                                                                                                                  NOT NULL NUMBER(20)  id_campaign_detail_promo_sms                                                                                                                                      NOT NULL NUMBER(20)   alguien que pueda dar algún consejo de optimizacion ??   gracias!!

Qué raro que te tarde en responder, a primera vista en estas consultas no veo nada especial para ralentizar nada. Tiene que ser algo relacionado con la tabla, o un tema externo. La tabla es muy grande? Has probado a ejecutar la consulta directamente desde SQLPlus?

Como 'status' tiene pocos valores, lo único que se me ocurre que puedes probar es crear un índice de tipo bitmap sobre este campo, aunque seguramente terminarás antes haciendo un explain plain sobre la consulta para detectar qué paso puede estar consumiendo más tiempo.

 

En respuesta a por mariomario89

Pues ya puedes olvidarte de optimizar la query, con 6.000 filas esa consulta no puede tardar prácticamente nada. Puedes tener algún problema específico con la herramienta SQL Developer, aparte que ya de por sí este IDE no es especialmente rápido, algunos entornos desarrollados en JAVA tienen estos problemas ;)

Compara con otras consultas hechas con SQL Developer, a ver si encuentras diferencia, pero si lanzas la consulta desde un script o desde un programa seguro que no vas a tener problemas de rendimiento.