Tengo una consulta de la siguiente forma:crear un índice en una marca de tiempo para optimizar la consulta
SELECT * FROM MyTable WHERE Timestamp > [SomeTime] AND Timestamp < [SomeOtherTime]
me gustaría para optimizar esta consulta, y estoy pensando en poner un índice en marca de tiempo, pero no soy seguro si esto ayudaría Idealmente, me gustaría hacer que la marca de tiempo sea un índice agrupado, pero MySQL no admite índices agrupados, a excepción de las claves primarias.
MyTable
tiene 4 millones de filas.Timestamp
es actualmente del tipoINT
.- Una vez que se ha insertado una fila, nunca se cambia.
- El número de filas con cualquier dado
Timestamp
es en promedio alrededor de 20, pero podría ser tan alto como 200. - filas recién insertadas tienen una
Timestamp
que es mayor que la mayoría de las filas existentes, pero podría ser menor que algunos de las filas más recientes.
¿Necesitaría un índice en Timestamp
para optimizar esta consulta?
Incluso en MSSQL si crea un índice agrupado en una columna no única, lo hace único bajo las carátulas. Seguramente, un índice ayudará a seleccionar pero ralentizar la inserción y el índice tomará espacio en el disco. Pero eso suena como un oficio que estás dispuesto a tomar. Pon el índice sobre la mesa y prueba. Los índices se usan para> y <. – Paparazzi
¿Tiene un índice agrupado en esta tabla? –
@BalamBalam Actualmente estoy diseñando una base de datos para consultas del tipo anterior, así que no puedo probar el rendimiento. – DanielGibbs