PDA

Ver la Versión Completa : Utilizanción de Query como Dataset


syntetiko
05-05-2003, 14:42:40
Hola amigos! :)

Estoy utilizando TQuery en vez de TTable para evitar los fletch de la tablas. Sin embargo en vez de utilizar sentencias SQL tipo "INSERT INTO ..." y demás para añadir los registros a la bd utilizo métodos como si de un TTable se tratase:

ej:

tbApuntes.FieldByName 'importe').AsString:=db_importe_edit.text;
tbApuntes.Post;

y sólo uso SQL para consultas. Mi pregunta es ¿aún así estoy evitando los fletch de las tablas?, es decir ¿se obtienen las mismas ventajas/rendimiento que usando sólo sentencias SQL para añadir, borrar...por el mero hecho de usan TQuery en lugar de TTables?

gracias!

haron
06-05-2003, 09:28:02
eso de que las tablas son peores que los queries es un mito.

no se que tipo de componentes estas usando. si usas los componentes de la paleta del BDE haz un pequeño experimento.

crea una tabla con muchos datos en una base de datos como Oracle o Interbase.

coloca un grid y un navegador asociados a esa tabla a traves de un query. la query contendra la sentencia 'select * from tabla'.

antes de ejecutar el programa lanza la aplicacion SQLMonitor que viene con Delphi y que se encuentra en el menu 'Database'. la aplicacion es un 'espia' que vigila la comunicacion cliente / servidor. puedes configurarlo para que capture los 'fetchs'.

ejecuta la aplicacion y situate en el ultimo registro con el navegador.

mola!!!! la query se acaba de traer todos los campos. chachi piruli!

sin embargo con una tabla no pasa lo mismo.

delphi.com.ar
07-05-2003, 02:38:08
Pero en un Query podes definir en la consulta que columnas quieres que retorne, como eso lo procesa el motor es IMPOSIBLE que retorne todas las columnas.
Con DAO todo es posible, porque las consultas que no son PassTrough las compila previamente el DBJet, y las procesa siempre de la misma forma independientemente del servidor con que se conecte, y aunque no sea una aplicacion cliente servidor. E ahí el motivo de la "asombrosa" velocidad de DAO.

¿Qué Fetch´s querés evitar?...
¿Querés ejecutar consultas unidireccionales?


PD:
Con respecto al Subject, los TQuery esan heredados de TDataSet!

syntetiko
07-05-2003, 20:22:23
Mi duda surgió leyendo el capítulo 27 "Comunicación Cliente/Servidor" del libro "La cara oculta de Delphi 4" de Ian Marteens en el que desaconsejaba el uso de TTable para desarrollos client/server inlustrándolo con las míticas pruebas del SQL Monitor. Aunque tras releer el capítulo pienso que ese problema de ineficiencia sólo de da si usas BDE, en mi caso uso ADO, y la verdad es que el rendimiento es muy bueno.




PD: Gracias por el comentario del subject, tienes toda la razón, algunas veces pierdo por completo la visión formal del lenguaje. :-D

__marcsc
07-05-2003, 20:31:26
Hola buenas,

si utilizas ADO es mejor utilizar Queries, dado que la tabla se acaba traduciendo a un select * (creo que no es exactamente así pero si muy parecido)

Saludos.