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

[SOLUCIONADO] una tabla o varias?

Estas en el tema de una tabla o varias? en el foro de Mysql en Foros del Web. Buenas a todos y gracias de antemano. Estoy creando un sitio en el que el 90% de los datos estaran volcados en un bd mysql. ...
  #1 (permalink)  
Antiguo 25/06/2013, 03:06
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Pregunta una tabla o varias?

Buenas a todos y gracias de antemano.

Estoy creando un sitio en el que el 90% de los datos estaran volcados en un bd mysql.

Cada registro de la bd alberga unos 20 campos aproximadamente.

La duda es si utilizar una sola tabla para los 20 capos o varias tablas relacionadas.

Por lo general habrá pocos casos en los que se requiran el 100% de los campos, solo cando se solicite toda la información del registro. En principio se mostrarían unos 5-8 campos de cada registro por defecto.

La Cuestión para mi es

¿Es si se ejecuta mas rapido una consulta a una tabla con 5-10 campos o a una con 20, o si es indiferente? Teniendo en cuenta que en la consulta solo solicitaría los campos necesarios y no todos loa campos.

Espero se me haya entendido bien.

Saludo.
  #2 (permalink)  
Antiguo 25/06/2013, 04:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: una tabla o varias?

La diferencia entre 10 o 20 campos no es significativa. La decisión de diseño debe tomarse conociendo los datos, con el numero de campos no das suficiente información.

En cuanto a las consultas, si lo mejor es pedir solo lo que se va a usar, pero dependiendo de como sean tus datos y como vas a hacer las siguientes consultas es posible que compense pedir todo el registro, guardar el resultado en memoria y luego trabajar contra esa memoria y no contra el servidor.

Un registro por ejemplo con un integer (PK), un varchar y 18 booleanos es muy distinto de uno con 20 LONGTEXT. Pero ni en este caso se podria decir si es mejor una o varias tablas ya que tanto la estrategia de consulta como de almcenaje depende del significado de los campos.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/06/2013 a las 04:51
  #3 (permalink)  
Antiguo 25/06/2013, 07:58
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: una tabla o varias?

Cita:
Iniciado por quimfv Ver Mensaje
La diferencia entre 10 o 20 campos no es significativa. La decisión de diseño debe tomarse conociendo los datos, con el numero de campos no das suficiente información.

En cuanto a las consultas, si lo mejor es pedir solo lo que se va a usar, pero dependiendo de como sean tus datos y como vas a hacer las siguientes consultas es posible que compense pedir todo el registro, guardar el resultado en memoria y luego trabajar contra esa memoria y no contra el servidor.

Un registro por ejemplo con un integer (PK), un varchar y 18 booleanos es muy distinto de uno con 20 LONGTEXT. Pero ni en este caso se podria decir si es mejor una o varias tablas ya que tanto la estrategia de consulta como de almcenaje depende del significado de los campos.
Gracias por la respuesta.

Segun puedo deducir de tu repuesta en cuanto a velocidad o carga del servidor es independiente o despreciable la diferencia que puede haber entre hacer una consulta a una tabla de 5-10 campos o de 20, aun cuando estos campos sean LONGTEXT.

Con lo de trabajar contra el servidor o guardarlo en memoria, entiendo que aveces es preferible traer todos los datos y almacenarlos en un array por ejemplo, para usarlos mas adelante que realizar una nueva consulta, para para traer los Campos restantes.

Mi caso se pretende mostrar un listado de los registros (15 ó 20 registros por hoja) con los campos principales, y posteriormente si se quiere saber todos los datos de un resgistro, mostrar exclusivamente ese registro con todos sus campos.

Mejor opción creo va a ser crear 2 tablas uno con los campos principales y otra con el resto. Y al traer los Campos principales almacenar los en un array, y cuando se desee ver todos los campos usar el array + una segunda consulta para el resto de campos.
  #4 (permalink)  
Antiguo 25/06/2013, 09:08
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 15 años, 3 meses
Puntos: 19
Respuesta: una tabla o varias?

Ademas amigo todo depende de que tanta seguridad desees darle a tu BD, muchos apoyan que guardar todos los datos en una sola tabla supone una mayor vulnerabilidad, para lo cual usan tablas relacionadas (como el caso de paiz, zona, ciudad, codigo postal, tarjetas, ETC), pero tambien como dice el amigo el diseño inside tambien en como vas a mover los datos, ademas tambien debes de pensar en la cantidad de Rows que planeas almacenar (El Sistema es uno Grande o solo un Mini Sistema)
  #5 (permalink)  
Antiguo 26/06/2013, 02:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: una tabla o varias?

Cita:
Segun puedo deducir de tu repuesta en cuanto a velocidad o carga del servidor es independiente o despreciable la diferencia que puede haber entre hacer una consulta a una tabla de 5-10 campos o de 20, aun cuando estos campos sean LONGTEXT.
No
Cita:
La diferencia entre 10 o 20 campos no es significativa. La decisión de diseño debe tomarse conociendo los datos, con el numero de campos no das suficiente información.
Cita:
Un registro por ejemplo con un integer (PK), un varchar y 18 booleanos es muy distinto de uno con 20 LONGTEXT.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 26/06/2013, 08:30
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: una tabla o varias?

Hola xerifandtomas.

En relacion a tu primer post, te aclaro lo siguiente:

Cita:
La duda es si utilizar una sola tabla para los 20 capos o varias tablas relacionadas.
Esto se decide, como bien lo indicaba quimfv, dependiendo de los datos que tengas o almacenes. Se tiene que realizar un estudio en donde entra en juego el modelo entidad relacion que es importante para construir tus bases de datos, porque si formas una tabla de muchos campos, los cuales no estan correctamente normalizados, te generaria una tabla con una cantidad de registros enorme, que la gran mayoria de ellos seria inecesario y repetitivo, y eso genera volumen en el peso de la base de datos. Par poder ayudarte debes indicarnos que es lo que deseas lograr de tu BD, y que es lo que tienes hasta ahora, para orientarte como debes realizar tus bases de datos.

Cita:
¿Es si se ejecuta mas rapido una consulta a una tabla con 5-10 campos o a una con 20, o si es indiferente? Teniendo en cuenta que en la consulta solo solicitaría los campos necesarios y no todos loa campos.
Los tiempos en que se demora una consulta en ejecutarse, y lo que muestra MySQl o todos los programas administradores ed bases de datos, es el tiempo en que la consulto demoro en ejecutarse, es decir, el tiempo que demoro en encontrarlo que tu estas solicitando, de ahi en adelante, depende mucho de la maquina que tengas el que te pueda traer o no todos los registros.

Por darte un ejemplo, en mi trabajo utilizamos como mucho una maquina que le decimos como servidor, pero en realidad es un pc, con una placa intel, procesador intel core i3 2.9, 4 GB de ram, y 2 discos duros en arreglo, lo cual cuando ejejcuto consultas simples como tu dices, el servidor es super rapido, pero cuando tengo que realizar consultas en las que me tiene que traer una 8000 a 10.000 registros, se pega, y no responde, por lo cual no es tan eficiente. En cambio, cuando nos mudamos a un servidor de verdad, un HP Proliant, la misma consulta que a lo mejor me traia 40 registros, se demoraba lo muismo que una consulta que me traia de 15.000 a 30.000 registros. Es asi como vas viendo y vas evaluando el rendimiento tanto de tu consulta como la del servidor.

En conclusión, debes preocuparte del tiempo de respuesta de la consulta, pero también debes preocuparte de los datos que tengas almacenado, de un buen diseño de base de datos, y de una buena maquina, para que puedas evaluar el tiempo de respuesta de tus consultas. El tiempo de tus consultas, es lo que el servidor se demora encontrar lo que tu estas solicitando + en traerte los datos. Estimo que lo que deberías reducir serian las llamadas al servidor, por ejemplo, como tu indicas cuando tienes tablas que contengas 20 registros, pero sabes que esos registros muy escasamente serán alterados, entonces los guardas en memoria, y así reduces el tener que estar llamando a la BD para que todos el tiempo muestre los mismos registros.

Cita:
Un registro por ejemplo con un integer (PK), un varchar y 18 booleanos es muy distinto de uno con 20 LONGTEXT. Pero ni en este caso se podria decir si es mejor una o varias tablas ya que tanto la estrategia de consulta como de almcenaje depende del significado de los campos.
@quimfv: Me parece muy bueno y acertado tu comentario.

Cita:
Mi caso se pretende mostrar un listado de los registros (15 ó 20 registros por hoja) con los campos principales, y posteriormente si se quiere saber todos los datos de un resgistro, mostrar exclusivamente ese registro con todos sus campos.
Eso lo puedes resolver mediante la misma consulta que realices, pero en ves de mostrar todos los registros, muestras solo 15 o 30, según lo que determines, asi mediante la mezcla de programación y LIMIT de MySQL, puedes mostrar registros paginados, y al realizar esto es mucho mejor que guardarlo en memoria, porque cada vez que consultes una pagina, estará mostrando registros actualizados y estarás reduciendo la carga del servidor.

Cita:
Ademas amigo todo depende de que tanta seguridad desees darle a tu BD, muchos apoyan que guardar todos los datos en una sola tabla supone una mayor vulnerabilidad, para lo cual usan tablas relacionadas (como el caso de paiz, zona, ciudad, codigo postal, tarjetas, ETC)
Es verdad, muy muy cierto.

Saludos.

PD: alguien sabe como pegar un link correctamente en un post, a mi me ha quedado remal ultimamente y nose como hacerlo para que quede como enlace.

Etiquetas: campo, registro, sql, tabla
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 13:57.