Una consulta sobre mysql odbc
Publicado por es_binario (757 intervenciones) el 07/12/2012 02:07:09
Que tal, estoy usando Foxpro con mysql, pero me he dado cuenta que en una consulta que implica realizarla sobre una tabla que contiene cerca de 100 mil registros la consulta demora un par de segundos, algo absurdo si gustan, pero el caso es que me devuelve un cursor digamos con 50 registros resultado de la consulta...
Pero lo importante y lo que me ha llamado mucho al atencion es que en java no me demora nada, como si fuese foxpro con una dbf nativa...
es decir la misma consulta en java con netbeans, exactamente igual incluso la lleno con un for en java... y el resultado de la consulta es abrumadoramente mas alto...
la cuestion es la siguiente, yo le hecho la culpa al hecho de que me conecto por odbc, pero no sé si alguno de uds. le ha pasado algo asi, y ha descubierto como acelerar las consultas o la creacion de cursores que contienen el resultado de la consulta en foxpro...
saludos.
En java...
casi un segundo mas lenta... En foxpro 9
Pero lo importante y lo que me ha llamado mucho al atencion es que en java no me demora nada, como si fuese foxpro con una dbf nativa...
es decir la misma consulta en java con netbeans, exactamente igual incluso la lleno con un for en java... y el resultado de la consulta es abrumadoramente mas alto...
la cuestion es la siguiente, yo le hecho la culpa al hecho de que me conecto por odbc, pero no sé si alguno de uds. le ha pasado algo asi, y ha descubierto como acelerar las consultas o la creacion de cursores que contienen el resultado de la consulta en foxpro...
saludos.
En java...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
String[] titulos = {"idProducto", "NombreProducto", "EstiloProducto", "ColorProducto","MaterialProducto", "P PAR"};
String[] registro = new String[6]; // numero de individuos
String sSql = "SELECT p.idproducto, c.nombrecolor, m.nombremarca,p.estiloproducto, p.tallaproducto, p.ppar "
+ " FROM producto p inner join color c on p.colorproducto = c.idcolor "
+ " inner join marca m on p.marca = m.idmarca where ppar < 150 and existencia > 0 limit 60; ";
Modelo = new DefaultTableModel(null, titulos);
ConexionMySQL mySql = new ConexionMySQL();
Connection conn = mySql.Conectar();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sSql);
if(rs.next()){
do{
if(rs!=null){
registro[0] = rs.getString("p.idproducto");
registro[1] = rs.getString("c.nombrecolor");
registro[2] = rs.getString("m.nombremarca");
registro[3] = rs.getString("p.estiloproducto");
registro[4] = rs.getString("p.tallaproducto");
registro[5] = rs.getString("p.ppar");
Modelo.addRow(registro);;
}else{
break;
}
}while(rs.next());
GridConsultaColores.setModel(Modelo);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
casi un segundo mas lenta... En foxpro 9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
TEXT TO sSqlcmd NOSHOW
SELECT p.idproducto, c.nombrecolor, m.nombremarca,
p.estiloproducto, p.tallaproducto, p.ppar
FROM producto p inner join color c on p.colorproducto = c.idcolor
inner join marca m on p.marca = m.idmarca where ppar < 150 and existencia > 0 limit 60;
ENDTEXT
Con = SQLSTRINGCONNECT(strconn)
IF Con > 0
*// WAIT WINDOW "Conexión realizada con Exito...!" TIMEOUT 0.02
cmd = SQLEXEC(Con, sSqlcmd,"cur_roomtype")
IF cmd > 0
Thisform.grilla1.RecordSource = "cur_roomtype"
ELSE
AERROR(laErr)
MESSAGEBOX("No se pudo conectar a mySQL. Error: " + CHR(13) + laErr[2])
ENDIF
ENDIF
CATCH
MESSAGEBOX("Ocurrio un Error al Conectar",48,"Error...!!!")
RETURN
ENDTRY
Valora esta pregunta


0