У меня есть таблица транзакций dt
с полем insdate
типа datetime (хранит только часть даты, а не время, но я не могу изменить это, к сожалению).В этой таблице также есть поле currency
.
Для того, чтобы курсы валют были доступны, я создам еще одну таблицу rate
, в которой будут столбцы source_Currency
и target_currency
.В нем также будут поля для указания даты, и я разделен на две опции:
- Имеет поле
rate.date
с одной датой.В этом случае запрос, который выполняет JOIN
, будет: ... and dt.insdate=rate.date
- Иметь поля
rate.from
и rate.to
, которые определяют период времени, в течение которого преобразование является действительным.Может месяцТогда запрос JOIN
будет выглядеть следующим образом: ... and dt.insdate>=rate.from and dt.insdate<rate.to
Хотя вариант 2 может быть более «компактным», особенно в случае с одной строкой в месяц, я чувствую, что 1 будет быстрее.Это предсказуемо без использования планов выполнения?