Чтобы выбрать информацию, относящуюся к списку сотен идентификаторов ... вместо того, чтобы делать огромный оператор выбора, я создаю временную таблицу, вставляю в нее идентификаторы, присоединяю ее к таблице, чтобы выбрать строки, соответствующие идентификаторам, а затем удалить временную таблицу. Таким образом, это по существу операция чтения, без постоянных изменений, внесенных в любые постоянные таблицы базы данных.Должен ли я совершать или откатывать транзакцию, которая создает временную таблицу, читает, а затем удаляет ее?
Я делаю это в транзакции, чтобы гарантировать, что временная таблица будет удалена, когда я закончу. Мой вопрос: что происходит, когда я совершаю такую транзакцию, и пусть она откатывается?
Performance-wise ... должен ли движок БД делать больше работы, чтобы откатить транзакцию против ее совершения? Есть ли разница, так как только изменения производятся в таблице temp?
Связанные вопросы здесь, но не отвечает на мой конкретный случай с участием временных таблиц: Should I commit or rollback a read transaction?
EDIT (Разъяснение Вопроса):
Не ищет совет до точки фиксации/отката. Транзакция абсолютно необходима. Предположим, ошибок не происходит. Предположим, что я создал временную таблицу, предположим, что я знаю, что реальная запись «work» на tempdb произошла, предположим, что я выполняю операции только для чтения (select) в транзакции и предполагаю, что я выдаю инструкцию delete в таблице temp. В конце концов, что ... дешевле, совершать или откатываться, и почему? Какая ДРУГОЕ действие может сделать db-движок в THAT POINT для фиксации и откат, основанный на этом конкретном сценарии, включающем временные таблицы и другие операции только для чтения?
На самом деле я не спрашиваю об эффективности его обертывания в транзакции. Соединение последовательно передается нескольким функциям API баз данных, и они используют общее имя/соглашение в таблице temp, поэтому необходима транзакция, гарантирующая удаление таблицы temp. Меня интересует эффект совершения этой транзакции или ее возврата. – Triynko
@Triynko - В каком отношении вы интересуетесь эффектом? Доступность таблицы temp из другого кода? – Thomas
@Thomas - Я прошу о выполнении команды против отмены транзакции. Это действительно неинтуитивно, потому что откат, похоже, подразумевает, что работа будет выполнена, но если такая простая незафиксированная транзакция будет откатна ... работа может быть просто удалена из памяти, и никакая работа «применить» изменения не будет записана , например, обновлять статистику базы данных. Трудно сказать, и поэтому я действительно ищу кого-то, кто знает, что может произойти в SQL Server под капотом во время откатов и совершает в этом конкретном случае. – Triynko