С помощью следующего кода я хотел бы определить, было ли для местоположения x, где произошло нарушение, предупреждение выпущено за шесть месяцев до этого.
В предложении where я использую результат функции Date_Sub
в качестве условия:
SELECT disruption.disruptionDate, warning.warningID, warning.warningDate
FROM disruption
JOIN warning ON disruption.locationId = warning.locationID
WHERE warning.warningDate <= disruption.disruptionDate
AND warning.warningDate. >= DATE_SUB(disruption.disruptionDate, INTERVAL 6 MONTH)
ORDER BY disruption.disruptionDate
Характеристики таблицы:
- Таблица предупреждений: 44 814 записей
- таблица сбоев : 962 529 записей
У меня проблемы с производительностью, и я думаю, что это может быть вызвано функцией DATE_SUB
в предложении WHERE.Мое исследование здесь принесло только Date_Sub в качестве метода вычитания в течение нескольких месяцев.
Есть ли более эффективный способ написать заявление?
Любая помощь очень ценится.