Оптимизация запроса в MySql
Есть запрос
SELECT COUNT(*) as RecordsCount
FROM `list`
LEFT JOIN `Customers`
ON `list`.`customer_id`=`Customers`.`CustomerId`
WHERE (`list`.`begin_date` <= '2009-04-20 14:33:58')
AND (`list`.`end_date` >= '2009-04-20 14:33:58')
AND (еще условие)
В таблице list есть индекса по begin_date, end_date и составной сразу по обоим. Тип ключей Btree. Тип таблиц InnoDB.
При выполнении запроса индексы в таблице list не используются вообще , хотя среди допустимых перечислены все.
Но в запросе
SELECT COUNT(*) AS BlackRecordsCount
FROM `list`
WHERE
(`end_date` <= '2009-04-20 14:33:58')
AND (`begin_date` >= '2009-04-20 14:33:58')
все как положено - состовной индекс задействован.
Что делать?? Как заставить использовать индекс?
Ответы (3)
RSSast25
obj-ihail
в качестве шаманского бубна попробуйте убрать уточнение `list`. если в Customers у вас нет таких полей
ar-axx
Только зарегистрированные и авторизованные пользователи могут отвечать.