У меня есть простая таблица со схемой «версий»:
Version | PartKey1 | PartKey2 | Value
1 | 0 | 0 | foo
2 | 0 | 0 | bar
1 | 1 | 0 | foobar
Эта таблица средняя (~ 100 000 строк для полной версии). В начале он загружается с версией 1, которая содержит полный снимок, и с течением времени добавляются инкрементные обновления, но мы хотим сохранить старые версии, поэтому они добавляются с увеличенным номером «Версия» (2 здесь). 1004 *
При чтении данных я хочу иметь возможность указать максимальную версию, и я хотел бы, если возможно, получить только те «строки», которые меня интересуют.
Например: указав 2 в качестве максимальной версии, я бы хотел запрос, который извлекает только 2 строки в таблице выше:
Version | PartKey1 | PartKey2 | Value
2 | 0 | 0 | bar
1 | 1 | 0 | foobar
Строка:
1 | 0 | 0 | foo
отбрасывается, потому что версия 2
этой строки является более новой.
Мне было интересно, был ли такой выбор возможен / целесообразен в запросе SQL. Я могу выполнить фильтрацию на стороне приложения, но, очевидно, это означает получение бесполезных ресурсов из БД, поэтому, если это возможно (и дешево на стороне БД), я бы предпочел переложить эту работу на БД.