Поиск записей, которые соответствуют набору диапазонов с хорошей производительностью - PullRequest
0 голосов
/ 27 марта 2019

Предположим, у меня есть таблица обмена валют с такой структурой:

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 подход к условиям?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...