Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

guardar solo 1 valor en un campo de varios ¿quita performance?

Estas en el tema de guardar solo 1 valor en un campo de varios ¿quita performance? en el foro de Mysql en Foros del Web. Hola a todos . Tengo la siguiente duda, estoy queriendo armar una tabla que tenga 4 campos, uno de tipo VARCHAR, otro DATE, otro INT, ...
  #1 (permalink)  
Antiguo 23/03/2011, 21:34
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
guardar solo 1 valor en un campo de varios ¿quita performance?

Hola a todos .

Tengo la siguiente duda,
estoy queriendo armar una tabla que tenga 4 campos, uno de tipo VARCHAR, otro DATE, otro INT, y otro de tipo TEXT. La idea es grabar segun la necesidad el dato que este manipulando en el campo que le corresponda, y los otros campos quedarán vacios.
Ejemplo:
1º registro: grabo 2 en el campo INT. el resto todo null.
2º registro: grabo 'hola' en el campo VARCHAR. el resto todo null.
3º registro: grabo '12-03-2011' en el campo DATE. el resto todo null.
etc...

¿pierdo performance al grabar solo un campo por registro?
es decir, ¿estoy mal trabajando espacio en disco?
  #2 (permalink)  
Antiguo 24/03/2011, 02:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: guardar solo 1 valor en un campo de varios ¿quita performance?

Si todo el espacio reservado para los otros campos del registro se pierde...

La siguiente pregunta seria

¿como lo optimizo?

Depende de por que lo estes intantando asi. Debes contarnos lo que te ha llevado a esa solución para buscar otra mejor que cumpla el mismo objetivo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 24/03/2011, 07:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: guardar solo 1 valor en un campo de varios ¿quita performance?

Quimfv, la idea de algo así, es buscando manejar N idiomas en el sistema, manejando solo 1 tabla de datos para cada idioma, entonces cada tabla tendria un collate distinto segun el idioma que vaya agregando.
El resto de las tablas solo manejarían datos técnicos e indicarían el ID de donde guarde cada información del sistema.
¿es esto viable?
¿puedo manejar de esta manera cualquier idioma, desde español a ruso, chino, arabe?
  #4 (permalink)  
Antiguo 24/03/2011, 08:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: guardar solo 1 valor en un campo de varios ¿quita performance?

No se tendria que entrar mas a fondo con la solución, pero si el espació que pierdes es el de los campos multiplicado por el numero de idiomas y te funciona yo no me preocuparia mas.... puesto que por muchos idiomas que tengas no sera mucho lo que pierdas...

Es decir debes poner las cosas en su lugar si tienes una solución que funciona que produce una perdida de espació que por mucho que crezca siempre serà poco espació no te preocupes... excepto que tu trabajo sea solo minimizar el espacio perdido.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 24/03/2011, 08:31
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: guardar solo 1 valor en un campo de varios ¿quita performance?

quimfv, perfecto, clarísimo!

una pregunta asociada a esto, quizás "LA" pregunta real sería ¿sabes si mySql guarda espacio físico rígido para cada campo o detecta que no hay valor y ese espacio no se ocupa al menos en su totalidad de definición( por ej. si declare para 'nombre' varchar 255, y en ese registro está vacio, mysql desperdicia absolutamente 255bytes?
  #6 (permalink)  
Antiguo 25/03/2011, 02:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: guardar solo 1 valor en un campo de varios ¿quita performance?

Las bases de datos, simplificando, están orientadas al registro por lo tanto guardan todo el espació necesario para guardar toda la información posible del registro. No para los campos especiales (LONGTEXT, BOLB...).

Se trata de poder acceder a todo el registro con una sola lectura de disco, además la información se "pagina" lo que quiere decir que se guarda espació para un que un determinado numero de registros estén juntos para poder leerlos en la misma lectura.

Imagina que pasaría si a ese campo 'nombre' varchar 255 no se le reservara todo el espació, cuando quisieras entrar ese nombre se tendría mover los registros para hacer espacio o guardarlo en otro lugar del disco. Las dos posibles soluciones son malas la primera significa leer y rescribir mucha info y la segunda haría que la lectura de la bbdd se convierta en una exploración potencialmente de todo el disco.

He dicho simplificando, lo digo sobre todo por que hace mucho tiempo que no repaso estos conceptos y por tanto tomalo como la idea de fondo que me quedo, podría haber algo que no fuera del todo preciso.

Oracle, usa estadísticas auto creadas del contenido del para optimizar estos temas...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/03/2011 a las 02:44
  #7 (permalink)  
Antiguo 25/03/2011, 13:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: guardar solo 1 valor en un campo de varios ¿quita performance?

Quim , gracias. Me queda clarísimo aunque solo sea una aproximación al tema. Tiene bastante sentido. Gracias!!

Etiquetas: performance, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:21.