Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Accediendo A Los Nombres De Campos
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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?
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes ¿No Estáis Hartos De Teclear Nombres De ... shordi Aplicaciones/Fragmentos de Código 9 Lunes, 27 Junio 2011, 20:34 Ver último mensaje
shordi
No hay nuevos mensajes SQL, Nombres De Campo shordi Bases de Datos 7 Martes, 28 Octobre 2014, 12:32 Ver último mensaje
shordi
No hay nuevos mensajes Averiguar Los Nombres De Las Tablas Y De S... Shell Bases de Datos 1 Martes, 02 Junio 2015, 09:19 Ver último mensaje
shordi
No hay nuevos mensajes Ejemplo De Mantenimiento De Una Tabla Mant... shordi Aplicaciones/Fragmentos de Código 2 Domingo, 20 Noviembre 2016, 18:56 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron