I have 1 main Query whose response time is optimal, the problem arises when after executing my query inside the while I execute a second query that reads the code field and queries 1 by one, here my code:
$_Query ="select * from remesas";
ResultSet rs = st.executeQuery($_Query);
while(rs.next()){
String SQLDevo ="SELECT DEVO.TIPO,CASE WHEN DEVO.TIPO='ER' THEN 'SF' WHEN DEVO.TIPO='EC' THEN 'BP'WHEN DEVO.TIPO='DR' THEN 'DV' end as clave,' ' as csituacion,COALESCE(DEVO.NOMBRE||' '||DEVO.APELLIDO_PATERNO||' '||DEVO.APELLIDO_MATERNO ,' ') AS NOMBRE, "
+ " COALESCE(DEVO.VISITA,' ') AS NUM_VISITAS,COALESCE(DEVO.NUM_IDENTIFICADOR,' ') AS NUM_IDENTIFICADOR ,COALESCE(S1.TAG,' ') AS TAG, "
+ " TO_CHAR(DEVO.FECHA,'DD-MM-YYYY') AS FECHA,COALESCE(TO_CHAR(FECHA_ENTREGA,'DD-MM-YYYY'),' ') AS FECHA_ENTREGA,"
+ " CASE WHEN TIPO ='EC' THEN "
+ " DOMICILIO||'|PISOS'||'|'||COLOR_DOMICILIO||'|'||S1.DESCRIPTION||'|'|| "
+ " CASE "
+ " WHEN REJA_BARDA = 'N' THEN 'SIN/REJA' "
+ " WHEN REJA_BARDA = 'S' THEN 'CON/REJA' "
+ " END ||'|'|| "
+ " CASE "
+ " WHEN COCHERA_TEJADA = 'N' THEN 'SIN/COCHERA' "
+ " WHEN COCHERA_TEJADA = 'S' THEN 'CON/COCHERA' "
+ " END "
+ " WHEN S2.DESCRIPTION IS NOT NULL THEN S2.DESCRIPTION"
+ " ELSE '|'|| S2.DESCRIPTION "
+ " END AS COMENTARIOS, "
+ " COALESCE(S2.TAG,' ') AS TAG2,COALESCE(S3.DESCRIPTION,' ') AS DESCRIPTION,COALESCE(S4.DESCRIPTION,' ') AS DESCRIPTION2,COALESCE(S5.TAG,' ') as MOTIVO,COALESCE(S5.ATTRIBUTE3,' ') AS MOTIVOCLIENTE "
+ " FROM XXQP.XXQP_DEVOLUCIONES_LN_TBL DEVO "
+ " LEFT JOIN ( "
+ " SELECT TAG,DESCRIPTION FROM APPLSYS.FND_LOOKUP_VALUES LV WHERE LV.LOOKUP_TYPE = 'XXQP_PARENTESCO' AND LV.LANGUAGE='ESA' "
+ " ) S1 ON S1.DESCRIPTION = DEVO.PARENTESCO "
+ " LEFT JOIN ( "
+ " SELECT TAG,DESCRIPTION FROM APPLSYS.FND_LOOKUP_VALUES LV WHERE LV.LOOKUP_TYPE = 'XXQP_IDENTIFICACION' AND LV.LANGUAGE='ESA' "
+ " ) S2 ON S2.DESCRIPTION = DEVO.IDENTIFICADOR "
+ " LEFT JOIN ( "
+ " SELECT DESCRIPTION,LOOKUP_CODE FROM APPLSYS.FND_LOOKUP_VALUES LV WHERE LV.LOOKUP_TYPE = 'XXQP_TIPOS_PUERTA' AND LV.LANGUAGE='ESA' "
+ " ) S3 ON S3.LOOKUP_CODE = DEVO.TIPO_PUERTA "
+ " LEFT JOIN ( "
+ " SELECT DESCRIPTION,LOOKUP_CODE FROM APPLSYS.FND_LOOKUP_VALUES LV WHERE LV.LOOKUP_TYPE = 'XXQP_ESTATUS_MEDIDOR' AND LV.LANGUAGE='ESA' "
+ " ) S4 ON S4.LOOKUP_CODE =DEVO.MEDIDOR "
+ " LEFT JOIN ( "
+ " SELECT TAG,DESCRIPTION,ATTRIBUTE3,ATTRIBUTE2 FROM APPLSYS.FND_LOOKUP_VALUES LV WHERE LV.LOOKUP_TYPE = 'XXQP_MOTIVOS_PLATINUM' AND LV.LANGUAGE='ESA' "
+ " ) S5 ON S5.DESCRIPTION= DEVO.MOTIVO AND S5.ATTRIBUTE2 =" + rs.getString("cliente_id")
+ " WHERE ROWNUM<2 AND DEVO.CODIGO_QP= " + rs.getString("CODIGO_QP") ;
ResultSet rsSegundo = stSegundo.executeQuery(SQLDevo);
if(rsSegundo.next()){
Nombre = rsSegundo.getString("NOMBRE");
Num_Visitas = rsSegundo.getString("NUM_VISITAS");
Num_Identificador = rsSegundo.getString("NUM_IDENTIFICADOR");
}
}
So if I have 1000 rows in my first query if it processes them well, but when it comes in the second query, consult 1 for one.
How could this process be improved?
Greetings.