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

optimizar base de datos?

Estas en el tema de optimizar base de datos? en el foro de Mysql en Foros del Web. hola miren tengo un sitio. donde tengo 2 paginas... la primera muestra una pantalla con articulos, donde debajo de cada articulo, indicara la cantidad de ...
  #1 (permalink)  
Antiguo 21/07/2014, 11:17
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
optimizar base de datos?

hola miren tengo un sitio. donde tengo 2 paginas...
la primera muestra una pantalla con articulos, donde debajo de cada articulo, indicara la cantidad de comentarios...
en la base de datos, tendre los articulos en una tabla y en otra los comentarios...


como hago si quiero saber, la cantidad de comentarios?

tecnicamente con sql, hago un count de cada ID, ingresando a la tabla...comentarios..
pero ha sucedido que tengo miles de comentarios y esta consulta, "mata" a la base dedatos...

entonces... no es mejor a la tabla de articulos, agregarle un campo, de cantidad de comentarios. y asi todo seria mas simple.. a la hora de mostrar una pagina donde requiera mostrar 10 articulos y saber la cantidad de comentarios...
  #2 (permalink)  
Antiguo 22/07/2014, 01:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: optimizar base de datos?

Los campos calculados no deberían usarse. Antes de adoptar esa solución intenta revisar los indices que tengas creados, y la querey que usas.

USE INDEX....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 04/08/2014, 07:34
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: optimizar base de datos?

Cita:
Iniciado por quimfv Ver Mensaje
Los campos calculados no deberían usarse. Antes de adoptar esa solución intenta revisar los indices que tengas creados, y la querey que usas.

USE INDEX....
como como?

dices que no esta bien entonces usar el campo, que tiene la cantidad de comentarios. y debo hacer un count, de la tabla que tiene los comentarios

(cada vez que inserto un comentario en la tabla "comentarios" se "updatea" el campo que tiene la cantidad de comentarios)

que queda mejor hacer=?
  #4 (permalink)  
Antiguo 04/08/2014, 07:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: optimizar base de datos?

Cita:
dices que no esta bien entonces usar el campo, que tiene la cantidad de comentarios. y debo hacer un count, de la tabla que tiene los comentarios
No exactamente...
Lo que @quimfv te dice es que no sedeben usar campos calculados en ningúin caso, sino que lo que se hace es realizar la consulta de cantidad al mismo tiempo que realizas otras.
El ejemplo más claro es el de una factura: ¿Por qué guardar el total de la factura, si puedes hacer que se recalcule con la misma consulta que devuelve la lista de productos facturados?
Sólo sirven para complicar los procesos y hacer más peticiones a la base sin ninguna ventaja.
En tu caso, por lo que dices tienes:
Cita:
tendre los articulos en una tabla y en otra los comentarios...
Eso significa que en la tabla "comentarios" tienes la FK de "articulos". En ese contexto lo único que necesitas es hacer un LEFT JOIN para listas los artículos:
Código MySQL:
Ver original
  1. SELECT A.id_articulo, A.contenido_articulo, count(C.id_articulo) TotalComentarios
  2. FROM Articulos A LEFT JOIN comentarios C ON A.id_articulo = C.id_articulo
  3. WHERE TRUE OR C.id_articulo IS NULL
  4. GROUP BY A.id_articulo
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 04/08/2014, 13:01
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: optimizar base de datos?

bueno una respuesta puede ser, depende...

por que en un sitio muy grande...
con 150 articulos y cada uno con 100 comentarios..
esta consulta como dije "mataria " a la base de datos o por lo menos tardaria mas de lo normal....
de hecho la usamos de esa manera en mi trabajo, por que eso sucedia, habia "mucho trafico"

pero bueno en sitios "chicos"
es verdad de usar la otra alternativa.
  #6 (permalink)  
Antiguo 04/08/2014, 13:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: optimizar base de datos?

Cita:
con 150 articulos y cada uno con 100 comentarios..
Con esa cantidad de registros, la base ni se entera que le estás consultando... la ejecución de la query duraría un suspiro.
Si esa query tarda más de 0.5 segundos tienes otro problema, y muy grande. MUY grande.

Para que se empiece a notar el impacto con una query así deberías estar trabajando con más de un millon de registros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, 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 16:40.