У меня есть справочная таблица (##lookup
).Я знаю, что это плохой дизайн, потому что я дублирую данные, но это значительно ускоряет мои запросы.У меня есть запрос, который заполняет эту таблицу
insert into ##lookup select distinct col1,col2,... from table1...join...etc...
Я хотел бы смоделировать это поведение:
delete from ##lookup
insert into ##lookup select distinct col1,col2,... from table1...join...etc...
Это явно обновит таблицу правильно.Но это много вставки и удаления.Он портится с моими индексами и блокирует таблицу для выбора.
Эта таблица также может быть обновлена чем-то вроде:
delete from ##lookup where not in (select distinct col1,col2,... from table1...join...etc...)
insert into ##lookup (select distinct col1,col2,... from table1...join...etc...) except if it is already in the table
Второй способ может занять больше времени, но я могу сказать,«без блокировки», и я смогу выбрать из таблицы.
Есть идеи, как написать запрос вторым способом?