У меня есть следующее заявление:Оптимизировать SQL UPDATE заявление/SqlCommand
UPDATE Table SET Column=Value WHERE TableID IN ({0})
У меня есть разделенный запятыми список TableIDs, который может быть довольно длительным (для замены {0}). Я обнаружил, что это быстрее, чем использование SqlDataAdapter, однако я также заметил, что если текст команды слишком длинный, SqlCommand может работать плохо.
Любые идеи?
Это внутри триггера CLR. Каждое выполнение SqlCommand несет какие-то накладные расходы. Я решил, что вышеприведенная команда лучше, чем SqlDataAdapter.Update(), потому что Update() будет обновлять отдельные записи, в результате которых выполняются несколько операторов SQL.
... Я закончил тем, что делал следующее (время запуска пошел от 0,7 до 0,25 секунд)
UPDATE T SET Column=Value FROM Table T INNER JOIN INSERTED AS I ON (I.TableID=T.TableID)
Не могли бы вы уточнить свой вопрос? Как насчет планов выполнения? – Trinimon
Итак, идентификаторы поступают из таблицы INSERTED. Кажется, я просто ответил на свой вопрос. – 2013-03-18 20:07:30