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

Optimizar Búsqueda

Estas en el tema de Optimizar Búsqueda en el foro de Mysql en Foros del Web. Bueno aver, mi duda es cual de los 2 casos es mejor para no cargar tanto el servidor, ya que e tocado bastante mysql y ...
  #1 (permalink)  
Antiguo 02/03/2011, 18:33
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 14 años, 11 meses
Puntos: 3
Pregunta Optimizar Búsqueda

Bueno aver, mi duda es cual de los 2 casos es mejor para no cargar tanto el servidor, ya que e tocado bastante mysql y php pero en plan personal, y ni idea de cuantos recursos consumen cada proceso. ;)


Pongo un ejemplo y si podeis me ayudais a aclarar cual mejor:

Por qjemplo una web de libros, con miles de titulos (creada la tabla LIBROS). Otra tabla de USUARIOS.

Entonces, un usuario puede seleccionar varios libros y guardarlos como preferidos, pero puede llenar mas campos personales sobre este libro, hasta modificar algun campo del registro original del libro en LIBROS.

Esto podria hacerlo de las 2 siguientes maneras:

1- Crear una tabla nueva (LibrosEscojidos), y si un usuario elige un libro todos los campos de la tabla LIBROS son copiados aki junto a la id del usuario para enlazarlo, mas los campos nuevos necesarios.

2- Crear la misma misma tabla (LibrosEscojidos), pero solo añadir los nuevos campos y enlazarlo con el libro original para buscar los otros datos estandar (como la foto) y con el usuario.

Duda, ¿cual usar?

La 1, imagino que busca mas rapido y carga menos el servidor, pero copiar los registros de LIBROS muchas veces con la imagen del libro y todo imagino que llegaria a ser muy pesado. (cada libro puede ser escojido por muchissimos usuarios= muchisimos nuevos registros aparentemente innecesarios.

La 2, crea muchos menos campos, pero tendria ke buscar en dos tablas para montar la informacion estandard (tabla LIBROS) mas la seleccionada por el usuario (LIBROS ESCOJIODOS)

muchissimas gracias por adelantado!

Última edición por phyronx; 02/03/2011 a las 20:19
  #2 (permalink)  
Antiguo 02/03/2011, 20:31
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Optimizar Búsqueda

pues eso creo que lo puedes responder con el diseño de tu db, pero vamos a hacer que tu mismo hagas tu respuesta.

La relacion que hay entre la tabla usuarios y libros de que tipo seria?

cuando tienes el tipo de relacion que indiques que debes de hacer.

eso en el link que te deje lo indican, estas son dos preguntas basicas que debes hacerte cuando estas haciendo el diseño de tu base de datos y veras como van saliendo , espero que sea de tu ayuda, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 02/03/2011, 21:01
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: Optimizar Búsqueda

Imagino que te refieres a la parte que dice:

Cada tabla tiene una clave primaria, un identificador único, compuesto por una o más columnas.
La mayoría de las claves primarias están formadas por una única columna (p.ej., CIUDAD_ID).
Para establecer una relación entre dos tablas es necesario incluir, en forma de columna, en una de ellas la clave primaria de la otra. A esta columna se le llama clave secundaria.



Ya se relacionarlas, el problema se basa como lo hago para recargar menos el server o la base de datos.

Explico mejor por si no se me entendio.

El usuario selecciona un libro que le gusta( guardado en una tabla llamada LIBROS), X, hasta aqui facil, pero una vez guardado el entra en el menu y quiere cambiar su libro seleccionada, cambiar el nombre por ejemplo, y agregar algun otro campo antes inexistente(aunque estos nuevos campos solo pueden ser unos preestablecidos.

Que hago, creo una nueva tabla y una entrada con el libro seleccionado adjudicandole un id, y un campo para el id_usuario, con los campos estandar mas los que dejo agregar. (Asi creare muchas entradas nuevas casi iguales, una de ellas con una imagen que imagino es tonteria aunque al él ir al menu, solo buscaria en la nueva tabla)

O En la tabla usuario agrego un campo de libros que me gustan con el id de los libros que le gustan de la tabla LIBROS, y aparte una nueba tabla pero esta vez envez de copiar lo de la tabla libros, solo estan los campos nuevos. (De esta manera solo agrego campos nuevos o que se puedan modificar pero dejo la imagen y otros en una sola tabla, sin llenar espacio inutilmente, aunque tambien si el usuario va amenu, para rellenar la informacion del libro debera buscar tanto en la tabla LIBROS cono en la nueva tabla.. y eso no se si carga para nada el servidor.)

Osea que es mejor, si llenar sin necesidad la base de datos, o hacer una busqueda en 2 tablas envez de una
  #4 (permalink)  
Antiguo 03/03/2011, 04:05
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: Optimizar Búsqueda

La segunda, sin duda. Hay que evitar la duplicidad de información en base de datos, entre otra cosa porque te costará mucho más mantener los datos fiables ya que si duplicas datos, cuando actualices una tabla tendras que actualizar todas. Por no hablar que no solo duplicarías datos en varias tablas, si no en la misma tabla.

El problema que pones sobre que tendrías que buscar en dos tablas para la información básica no es tal problema ya que con un INNER JOIN y buscando por clave primaria en la tabla libros esta consulta no debe ser costosa.
  #5 (permalink)  
Antiguo 03/03/2011, 09:03
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: Optimizar Búsqueda

Muchas gracias!

Etiquetas: optimizar
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 19:44.