Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/12/2010, 07:12
Avatar de sysdebian
sysdebian
 
Fecha de Ingreso: octubre-2008
Mensajes: 196
Antigüedad: 15 años, 6 meses
Puntos: 8
Optimización en tabla de visitas

Buenas,

Tengo unas dudas sobre la optimización que le podría realizar a una tabla de visitas.
Actualmente tiene casi 10 millones de registros, y aumenta en unos 30000 cada dia.

La tabla tiene los siguientes campos:

id
producto_id
producto_nombre
producto_url
producto_categoria
propietario_id
propietario_nombre
fecha
pais
url_referrer
keywords

Mis primeras dudas son sobre los campos, creo que es un poco redundante tener el id del producto, su nombre y su url. Con el id del producto ya se puede acceder a su nombre, url y categoria. Y lo mismo con el propietario.
Es mejor registrar solo el id, para tener una tabla mas pequeña, o por el contrario, mejor poner ahí el nombre, url y categoria, para cuando se hagan las consultas no tener que tirar de otras tablas ?

Cuando hablo de mejor, me refiero a rendimiento, teniendo en cuenta que estamos hablando de tablas tan grandes, que son usuarios que les gustan ver sus estadísticas... etc.

Otra duda que tengo es si se podría optimizar de alguna forma dividiendo la tabla en otras tablas, por ejemplo, tabla del mes actual (lo que llevaría el grueso de las consultas) y tabla total, para consultar el historico.

Quizá haya otra forma de manejar esto que a mi se me escapa, porque no soy ningún experto en sql. ¿ Algún consejo ? mysam? innodb ?

Unas de las consultas que hago ahora mismo, saca un top de visitas diario, semanal, mensual y total. Lo cierto es que ahora lo tengo muy mal (esto se corregirá a nivel de código), pero se registran entradas duplicadas por cada usuario, por lo que a la consulta le tengo que meter un "distinct". Tengo entendido que estos parámetros son los primeros a evitar en cuanto a optimización se refiere y es algo que haré en breve. Pero ahora mismo, las consultas de top total se me van fácil a mas de 15 min.

Gracias y un saludo.
__________________
Artigoo: Gestor de contenido online.