Accediendo A Los Nombres De Campos


Objetivo: Accediendo A Los Nombres De Campos
Supongamos que queremos obtener el nombre del campo más largo de una tabla dada.
Hay dos maneras, que yo sepa:

-Recorrer la colección de campos (fields) de la tabla de la conexión (o sea: miconexión.tables[mitabla].fields)
-Hacer una consulta y recorrer los resultfields del result.

Suponiendo de antemano que la primera opción es más rápida, por cuanto no hay que bajar datos sólo definiciones (Según el manual de gambas un objeto table es una definición de una tabla), he comparado los dos métodos y me he llevado una sorpresa.
Con una tabla que contiene 44 campos, sobre un servidor mysql que reside en los USA, el primer método me tarda 20 segundos. El segundo método ¡medio segundo!

El código seguido es éste:
dim miconexion as connection
dim tabla as table
dim r as result
dim cad as string
dim tcampo as field
dim campo as resultfield
.... configuamos la conexión y ...
miconexion.open
PRINT "primer bucle inicio: " & Now
ttabla = miconexion.Tables[tabla]
FOR EACH tcampo IN ttabla.Fields
cad = If(Len(cad) < Len(tcampo.Name), tcampo.Name, cad)
NEXT
PRINT "primer bucle final: " & Now
PRINT cad

PRINT "segundo bucle inicio: " & Now
r = miconexion.EXEC("select * from " & ME.Tag.tabla & " limit 1") 'limit 1 para no traer los mínimos datos posibles"
FOR EACH campo IN r.Fields
cad = If(Len(cad) < Len(campo.Name), campo.Name, cad)
NEXT
PRINT "segundo bucle final:" & Now
PRINT cad



No es un tema de cachés, porque he invertido el orden de los dos bucles y el resultado es el mismo.
La pregunta es ¿Alguien sabe si mencionar Table implica descargar los datos de la tabla? Según el manual "Table contiene una definición de una tabla", pero cuarenta veces más lento me dice que ahí pasa algo raro... ¿no?

Perfil MP  
Objetivo: Re: Accediendo A Los Nombres De Campos
No tengo ni idea. ¿Has probado a ver que pasa con un servidor MySql local? Evidentemente los tiempos de respuesta se acercarán más, pero aún así podemos ver si hay diferencias en la eficiencia de ambas consultas. En caso afirmativo me temo que habrá que preguntar a Benoit.

Saludos

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.115s (PHP: -31% SQL: 131%)
Consultas SQL: 22 - Debug off - GZIP Activado