una obtener mes insertar hora guardar formato fecha desde crear consultas con como campo mysql indexing

obtener - mysql mes de una fecha



¿Es una buena idea indexar el campo de fecha y hora en mysql? (2)

Estoy trabajando en el diseño de una gran base de datos. En mi aplicación tendré muchas filas, por ejemplo, actualmente tengo una tabla con 4 millones de registros. La mayoría de mis consultas usan la cláusula datetime para seleccionar datos. ¿Es una buena idea indexar campos de fecha y hora en la base de datos mysql?

Select field1, field2,.....,field15 from table where field 20 between now() and now + 30 days

Estoy intentando mantener mi base de datos funcionando bien y las consultas se ejecutan sin problemas

Además, ¿qué idea crees que debería tener para crear una base de datos de alta eficiencia?


MySQL recomienda usar índices por una variedad de razones, incluida la eliminación de filas entre condiciones: http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Esto hace que su columna de fecha y hora sea un excelente candidato para un índice si va a utilizarlo en condiciones frecuentes en consultas. Si su única condición es BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY) y no tiene otro índice en la condición, MySQL tendrá que hacer una exploración de tabla completa en cada consulta. No estoy seguro de cuántas filas se generan en 30 días, pero siempre que sea menos de aproximadamente 1/3 del total de filas, será más eficiente usar un índice en la columna.

Su pregunta sobre la creación de una base de datos eficiente es muy amplia. Yo diría que solo me asegure de que esté normalizado y todas las columnas apropiadas estén indexadas (es decir, las que se usan en las cláusulas join y where).


Here pruebas realizadas por el autor mostraron que la marca de tiempo Unix entera es mejor que DateTime. Tenga en cuenta que usó MySql. Pero creo que no importa qué motor de DB use, la comparación de los números enteros es un poco más rápida que la comparación de fechas, por lo que el índice int es mejor que el índice DateTime. Tome T1 - tiempo de comparar 2 fechas, T2 - tiempo de comparar 2 enteros. La búsqueda en un campo indexado toma aproximadamente O (log (rows)) tiempo porque el índice se basa en un árbol balanceado; puede ser diferente para diferentes motores de DB, pero de todos modos Log (rows) es una estimación común. (si no usa el índice basado en bitmask o r-tree). Así que la diferencia es (T2-T1) * Registro (filas): puede desempeñar un papel si realiza su consulta a menudo.