Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Utilizanción de Query como Dataset (https://www.clubdelphi.com/foros/showthread.php?t=59)

syntetiko 05-05-2003 14:42:40

Utilizanción de Query como Dataset
 
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.


La franja horaria es GMT +2. Ahora son las 05:46:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi