есть странный здесь. У меня есть многостольный запрос на соединение с правильными индексами, назначенными для условий соединения Запрос выполняется с индексами, когда одна из таблиц установлена в качестве основного соединения (.7se c complete), но не при установке другой таблицы (189se c complete). Я надеюсь, что кто-то может помочь мне понять, почему индекс будет работать во втором сценарии, а не в первом. Я включил ниже условия объединения вместе с EXPLAIN для каждого запроса:
Индексы объединения не работают:
FROM
((
`fuse`
LEFT JOIN `occupancy` ON (((
CONVERT(substring_index(
`occupancy`.`last_name`,
'_',-(
1
)),UNSIGNED INTEGER) = `fuse`.`agent_id`
)
AND ( `fuse`.`login_date` = `occupancy`.`login_date` )))
LEFT JOIN `reporting_match` ON ((
`fuse`.`agent_id` = `reporting_match`.`agent_id`
)))
)
Работают индексы соединения:
FROM
((
`occupancy`
LEFT JOIN `fuse` ON (((
CONVERT(substring_index(
`occupancy`.`last_name`,
'_',-(
1
)),UNSIGNED INTEGER) = `fuse`.`agent_id`
)
AND ( `fuse`.`login_date` = `occupancy`.`login_date` )))
LEFT JOIN `reporting_match` ON (
substring_index(
`occupancy`.`last_name`,
'_',-(
1
)) = `reporting_match`.`agent_id`
))
)