Это быстрее, чтобы обновить строку, или удалить ее и вставить новую? - PullRequest
6 голосов
/ 09 октября 2010

Учитывая два сценария на SQL Server 2008/2005 - 1 таблица имеет 5 строк 2 Таблица содержит 1 миллион строк

Если нам нужно обновить несколько строк, что является эффективным и почему? 1) ОБНОВИТЬ необходимые столбцы 2) УДАЛИТЬ строку и ВСТАВИТЬ новую строку с обновленной информацией

Ответы [ 2 ]

16 голосов
/ 09 октября 2010

Вы не должны задавать этот вопрос. Вы спрашиваете: «Лучше ли делать это правильно или неправильно, во имя какой-то туманной идеи« быстрее »?»

У вас есть приложение, которое как-то слишком медленно? Вы по какой-то причине думаете, что проблема в том, что ваши обновления занимают слишком много времени? Делали ли вы какие-либо измерения и тестирование производительности ваших взаимодействий с базой данных?

То, что вы делаете, - это преждевременная оптимизация наихудшего вида, и вы делаете свое приложение медвежьей. Вы делаете дикие предположения о том, как ускорить ваш код, абсолютно не на чем основывать его.

Напиши свой код правильно. Затем попробуйте найти, где у вас есть проблемы с производительностью. У вас даже есть проблемы с производительностью, или вы задаете этот вопрос просто потому, что считаете, что вам следует спросить об этом? Вы не должны.

Даже если у вас определенно была проблема с слишком медленными обновлениями, мы не можем ответить на вопрос «Является ли X быстрее, чем Y», потому что вы не предоставили нам достаточно информации, такой как:

  • Какую базу данных вы используете
  • Таблица раскладок
  • Какие индексы есть в базе данных
  • Как вы взаимодействуете с базой данных

Пожалуйста, напишите свой код правильно, а затем вернитесь с подробностями о том, что слишком медленно, вместо того, чтобы гадать на микрооптимизациях.

2 голосов
/ 09 октября 2010

Обычно обновление одной строки происходит быстрее.Причиной удаления существующей строки и вставки новой строки обе эти операции будут влиять на кластерный индекс.Обновление одной строки также будет влиять на различные индексы, но не на кластерный индекс.Нет данных, подтверждающих мою претензию, но логически движки БД должны вести себя таким образом.

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