У меня есть индексы для tbl1.date и tbl2.datetime. Когда я делаю следующее:
EXPLAIN SELECT * FROM tbl1 LEFT JOIN tbl2 ON tbl2.datetime = tbl1.date
tbl2.datetime
индекс используется (как и ожидалось)
Очевидно, мне нужно преобразовать tbl2.datetime
в дату, чтобы оператор SELECT
работал в реальной жизни. Тем не менее, это не приводит ни к одному из используемых индексов:
EXPLAIN SELECT * FROM tbl1 LEFT JOIN tbl2 ON DATE(tbl2.date) = tbl1.date
Чего мне не хватает?
UPDATE:
Я пробовал что-то подобное, но продолжаю получать синтаксическую ошибку
"# 1064 .... проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'SELECT * FROM tbl1 СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ tbl2 НА ДАТУ (ВЫБРАТЬ * ОТ как в строке 1 "
EXPLAIN SELECT * FROM tbl1 LEFT JOIN tbl2 ON DATE( SELECT * FROM (SELECT DISTINCT
datetime FROM tbl2.datetime) as tempTable ) = quotes.GOOG.date