Cita: Resulta que no puse el campo como date puesto que no voy a trabajar con él más que para mostrarlo y buscar por mes y año(nada de buscar entre 2 fechas ni de darme una catidad de tiempo determinado).
Bueno, precisamente por esa razón es que debiste ponerlo como DATE. Es mucho más eficiente en las búsquedas y ocupa en disco mucho menos espacio que ponerlo como CHAR.
Cita: Luego, las inserciones de fechas se realizan desde otra aplicación diferente a la que acceden los usuarios y creo que lo voy a poner tipo select para luego almacenarlo de la forma dd/mm/aaaa(el año no será select).
Enorme error. Todos los DBMS almacenan las fechas en formato "aaaa/MM/dd", y desde el punto de vista de Bytes, lo almacenan con 4 u 8 bytes (8 bytes el DATETIME).
Si lo almacenas en el formato que dices deberás usar VARCHAR o CHAR, con el consiguiente problema de conversiones.
El formato elegido internacionalmente para el almacenamiento de fechas tiene un sentido enormemente práctico. Por darte un ejemplo, es mucho más fácil hacer ordenamientos progresivos, porque al estar el año y el mes al principio, jamás se producirán alteraciones del tipo:
Cita: 01/02/2009
01/03/2009
01/04/2009
02/02/2009
05/02/2009
¿Se entiende?
Cita: En el select del filtrado tengo como valor para cada mes por ejemplo Enero->01, Febrero->02... y así sucesivamente con todos los meses. Sólo tendría que extraer del campo que me almacena la fecha el substring correspondiente al mes para compararlo con estos valores.
Sigue siendo ineficiente, porque es más simple para el DBMS hacer:
Código sql:
Ver originalSELECT *
FROM tabla
WHERE MONTH(fecha) = 1;
Que hacer
Código sql:
Ver originalSELECT *
FROM tabla
WHERE MID(campofecha, 4, 2)='01';
En el primer caso tiene que extraer un número, cosa que se hace rápidamente. En el segundo, MySQL tiene que leer todas las cadenas, luego extraer la subcadena y luego hacer la comparación.
Es posible que en pruebas cortas con pocos registros no notes el problema, pero a medida que aumente la cantidad de entradas, la performance de la segunda opción se degradará, y bastante.