В комментах предложили навесить функциональный индекс. Выглядит как то, что нужно.
❔Что это?
Это такой индекс, в котором ключи посчитаны через функцию.
😎Решение №1
Никогда его не использовала, но для нашего случая будет по типу:
CREATE INDEX us_date_idx ON my_table (concat_ws('/', month(dt), day(dt), year(dt)))Делаем 'concat like входная строка' - применяется наш индекс.
👉Решение №2
Если мы не можем создать индекс, идея такая:
1. Разделить поисковую строку по /
2. Три случая:
▪️1 элемент - день, месяц или год
like '%elem1%'
▪️2 элемента - либо день и год, либо месяц и день
--день и год
--1/2 - это конец дня и начало года
like 'year%day'
--месяц и день
--1/2 - это конец месяца и начало дня
like '-%month-day%'
▪️3 элемента
--1/29/202 - месяц и год могут быть недописаны
like 'year%-%month-day'