У меня есть индексы по 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 LEFT JOIN tbl2 нА ДАТУ (SELECT * FROM (SELECT DISTINCT FROM DateTime tbl2.datetime) в стемы»в строке 1"
EXPLAIN SELECT * FROM tbl1 LEFT JOIN tbl2 ON DATE(SELECT * FROM (SELECT DISTINCT
datetime FROM tbl2.datetime) as tempTable) = quotes.GOOG.date
опечатка: DATE (tbl2.date) -> DATE (tbl2.datetime) – Riedsio 2010-11-25 22:34:48