Вам не нужно , нужно составной индекс, но удовлетворяющее условию some_fk_id
и modified_date
, где можно выполнить только с индексами (т. Е. Очень быстро), если вы это сделаете.
Лучше всего посмотреть план запроса и профилировать.
Вы можете просмотреть план запроса, используя EXPLAIN
:
EXPLAIN SELECT * FROM foo WHERE some_fk_id=1 AND modified_date > 'date1' AND modified_date < 'date2' ORDER BY modified_date DESC;
Попробуйте его как с составным индексом, так и без него, и посмотрите, с каким планом он придет. Худшее, что может случиться, это filesort
- старайтесь избегать этого, если вам нужно быть быстрым.
Самое главное, испытания во время выполнения с запросами, данными и оборудованием, которое вы фактически будете использовать. В вашем конкретном случае может оказаться, что пространство, занимаемое составным индексом, замедлит вас больше, чем просто поиск по записям. Например, если у some_fk_id очень высокая селективность в таблице, индекс второго уровня может не понадобиться.