SELECT
*
FROM
bulbs
WHERE
start_date <= '2012-02-20'
AND end_date >= '2012-02-10'
Этот тип запроса, однако, очень медленный на больших объемах данных.
Это потому, что индекс on (start_date, end_date) не помогает больше, чем индекс только(start_date).
Один из способов повысить производительность, чтобы установить как верхний, так и нижний предел даты начала.Это можно сделать, если вы знаете максимальное количество дней между start_date и end_date.
Если, например, они никогда не превышают 60 дней, вы можете сделать это ...
SELECT
*
FROM
bulbs
WHERE
start_date <= '2012-02-20'
AND start_date >= '2012-02-10' - 60
AND end_date >= '2012-02-10'