Предположим, у меня есть таблица обмена валют с такой структурой:
CREATE TABLE CurrencyExchanges
(
Id int,
FromCurrency uniqueidentifier,
ToCurrency uniqueidentifier,
RateDate date,
Value int
);
Я хочу запросить эту таблицу для обмена валют за промежуток времени или за одну дату.Например, все записи с RateDate >= '2019-03-27'
и RateDate <= '2019-03-31'
или RateDate >= '2019-03-01'
и RateDate <= '2019-03-28'
.Обратите внимание, что они могут перекрываться.Теперь я знаю, что могу сделать что-то вроде этого:
SELECT *
FROM CurrencyExchanges
WHERE (RateDate >= '2019-03-27' AND RateDate <= '2019-03-31')
OR (RateDate >= '2019-03-01' AND RateDate <= '2019-03-28')
Но проблема в том, что я передам в список список этих диапазонов дат, и их может быть несколько.Таким образом, я должен был бы добавить к предложению where список из ~ 1000 OR
условий.Я беспокоюсь о том, насколько быстрым может быть 1000 условий в предложении where.Мне было интересно, есть ли альтернатива, например, использование IN
для скалярных значений или другая альтернатива.
Есть идеи?Могу ли я получить высокую производительность, если я использую этот список OR
подход к условиям?
Спасибо