Esto es para un próximo proyecto. Tengo dos tablas - en primer lugar se tiene pistas de fotos, y el segundo rastrea el rango de la foto¿Cómo optimizar esta tabla MySQL?
Photos:
+-------+-----------+------------------+
| id | photo | current_rank |
+-------+-----------+------------------+
| 1 | apple | 5 |
| 2 | orange | 9 |
+-------+-----------+------------------+
El rango foto no deja de cambiar de forma regular, y esta es la tabla que sigue es:
Ranks:
+-------+-----------+----------+-------------+
| id | photo_id | ranks | timestamp |
+-------+-----------+----------+-------------+
| 1 | 1 | 8 | * |
| 2 | 2 | 2 | * |
| 3 | 1 | 3 | * |
| 4 | 1 | 7 | * |
| 5 | 1 | 5 | * |
| 6 | 2 | 9 | * |
+-------+-----------+----------+-------------+ * = current timestamp
Todos los rangos se rastrean con fines de informe/análisis. [Editar] Los usuarios tendrán acceso a las estadísticas a pedido.
Hablé con alguien que tiene experiencia en este campo, y me dijo que el almacenamiento de rangos como el anterior es el camino a seguir. Pero todavía no estoy seguro.
El problema aquí es redundancia de datos. Habrá decenas de miles de fotos. El rango de la foto cambia cada hora (muchas veces, en minutos) para las fotos recientes, pero con menos frecuencia para las fotos anteriores. A este ritmo, la tabla tendrá millones de registros en unos meses. Y como no tengo experiencia en trabajar con grandes bases de datos, esto me pone un poco nervioso.
pensé en esto:
Ranks:
+-------+-----------+--------------------+
| id | photo_id | ranks |
+-------+-----------+--------------------+
| 1 | 1 | 8:*,3:*,7:*,5:* |
| 2 | 2 | 2:*,9:* |
+-------+-----------+--------------------+ * = current timestamp
Eso significa algún código extra en PHP para dividir el rango/hora (y clasificación), pero que se ve bien para mí.
¿Es esta la manera correcta de optimizar la tabla para el rendimiento? ¿Qué recomendarías?
es el rango conectado a cualquier otra cosa? como el usuario que lo dio? y si es así, ¿qué tan importante es esa relación? ¿es decir? ¿Necesitas almacenar el rango del juego del usuario? –
El rango no está vinculado a otra cosa que no sea la foto. ¡Es calculado y cambiado por un algoritmo computacional! :) – Yeti
@Col: ¡tus comentarios siempre me hacen sonreír! :) En realidad, los ID se parecen más a esto: ** 4606886418 **, en este momento hay alrededor de 2 millones de fotos. El rango de cada uno cambia más de 50 veces. Entonces, aunque puede que no sea demasiado grande, tampoco se puede llamar pequeño. – Yeti