Tengo una tabla db con aproximadamente 10 o más columnas, dos de las cuales son mes y año. La tabla tiene aproximadamente 250k filas ahora, y esperamos que crezca en aproximadamente 100-150k registros por mes. Muchas consultas involucran la columna de mes y año (por ejemplo, todos los registros de marzo de 2010), por lo que con frecuencia necesitamos obtener las combinaciones disponibles de mes y año (es decir, ¿tenemos registros para abril de 2010?).La mejor manera de obtener valores distintos de la tabla grande
Un compañero de trabajo cree que deberíamos tener una tabla separada de la principal que solo contiene los meses y años de los que tenemos datos. Solo agregamos registros a nuestra tabla principal una vez al mes, por lo que sería una pequeña actualización al final de nuestros scripts para agregar la nueva entrada a esta segunda tabla. Esta segunda tabla sería consultada siempre que necesitemos encontrar las entradas mes/año disponibles en la primera tabla. Esta solución me parece kludgy y una violación de DRY.
¿Cuál crees que es la forma correcta de resolver este problema? ¿Hay una mejor manera que tener dos mesas?
+1. ¡Ni siquiera pienses en tener otra mesa! –
Sugerí un índice, pero me dijeron que un grupo/distinto aún sería lento en una tabla con unos pocos millones de registros – derivation
de acuerdo. La tabla secundaria es una mala idea, no solo desde un punto de vista hipotético de "esto no está normalizado", sino desde un punto de vista de las consecuencias de mantenimiento involuntario. ¡Crea un índice y listo! –