SELECT t1.dates_times, t1.file, t2.agent
FROM ftp_json_stat t1, ftp_json t2
WHERE t1.keys REGEXP '^(.{8})' = t2.keys
в t1.keys значения вида: d0790b5d_2018071323
в t2.keys значения вида: d0790b5d
При выполнении запроса - висит, потом отваливается по времени максимального выполнения. Записей в базах не много (100 000).
Запрос правильно составлен? Не могу понять почему висит, может быть получается очень большое количество записей которые он хочет выбрать из-за корявости запроса?
в t1.keys значения вида: d0790b5d_2018071323
в t2.keys значения вида: d0790b5d
Если нужно сравнить значение из t2 с первой до подчёркивания группой из t1, используйте, например
WHERE SUBSTRING_INDEX(t1.keys, '_', 1) = t2.keys
Если длина сравниваемой подстроки фиксирована (8 символов), можно использовать и прямое выделение нужного количества символов
WHERE LEFT(t1.keys, 8) = t2.keys
PS. REGEXP в MySQL в принципе ничего не преобразовывает - только проверяет.
Пробуйте так:
SELECT t1.dates_times, t1.file, t2.agent FROM ftp_json_stat t1
JOIN ftp_json t2 ON t1.keys REGEXP CONCAT('^', t2.keys)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости