¿Cuál es la mejor manera de almacenar una lista de precios histórica en una tabla MySQL?

Básicamente, mi pregunta es esta: tengo una lista de precios, algunos de los cuales son históricos (es decir, quiero poder buscar que el producto X costara $ 0.99 el 11 de marzo, $ 1.99 el 1 de abril, etc.). ¿Cuál es la mejor manera de almacenar esta información?

Supuse que probablemente tendría una tabla de productos que tiene una clave externa para una tabla de precios. Inicialmente pensé que almacenar el precio actual probablemente sería la mejor apuesta, pero creo que quiero poder almacenar datos históricos de precios, por lo que la mejor ruta sería almacenar una tabla como la siguiente para la lista de precios:

CREATE TABLE prices (
         id BIGINT auto_increment not null,
         primary key (id),
         price DECIMAL(4,2) not null,
         effectiveStartDate DATETIME NOT NULL,
         effectiveEndDate DATETIME 
);

Estoy un poco perdido aquí. Me gustaría poder buscar productos de manera eficiente y ver cómo el precio de ese producto cambió con el tiempo. ¿Cómo puedo asociar eficientemente un conjunto de estos precios con un producto? Supongo que lo que pregunto es: "¿Cuál sería la mejor manera de indexar esto para poder proporcionar una búsqueda eficiente de consultas que abarquen un conjunto específico de fechas?"

Respuestas a la pregunta(3)

Su respuesta a la pregunta