Не прямой ответ на этот вопрос.Итак, вот так.
UPDATE table SET ColumnA = 'something'
если для ColumnA существует индекс, то у вас будет небольшое снижение производительности, так как для каждой строки будет две операции записи.Сначала данные в таблице, а затем запись для обновления индекса.
Вы можете даже иметь несколько индексов, каждый из которых имеет ColumnA как часть индекса, что означает, что у вас будет несколько записей в дополнение к строке таблицы.Вы можете видеть, как наличие нескольких индексов может начать действительно замедлять ваши обновления.
Но если ColumnA вообще не индексируется, тогда будет только одна запись только для каждой строки.
UPDATE table SET ColumnA = 'something' WHERE ColumnB = 'something else'
Для этого запроса, если индекс существует для ColumnB, а не для ColumnA, будет очень быстро найти запись (называемую поиском) и одну запись для обновления, и, так как индекс не заботится о columnA, ему не понадобитсяОбновление.
Но если вы индексируете ColumnA, а не ColumnB, сначала вы будете читать каждую строку в таблице (это называется сканированием и, как правило, плохим), который, хотя чтение выполняется быстрее, чем запись, все еще очень медленный, а затемзапишет в таблицу, а затем еще одну запись для индекса.В основном самый медленный способ сделать это.
DELETE table WHERE ColumnB = 'somethingelse'
Теперь, если у вас есть индекс для любого столбца в этой таблице, две записи, удаление из таблицы и обновление / удаление записи в индексе.
Опять же, если ColumnB не проиндексирован, вы сканируете таблицу, затем удаляете строки из таблицы и обновляете индексы, если таковые имеются.
INSERT INTO table (ColumnA, ColumnB) VALUES ('something','something else')
Если индексов не существует, выполняется одна запись в таблицу, и онаготово.
Опять же, если индексы существуют, то для каждого из них требуется дополнительная запись.
Я не упомянул ограничения уникальности первичного ключа, потому что вы действительно не можете обойти их, когда вам нужен первичный ключ, но каждая запись должна быть проверена, чтобы увидеть, существует ли что-то с этим ключом перед вставкой.Это будет быстрый поиск по первичному ключу, но, тем не менее, это еще один шаг в этом процессе.Чем меньше шагов, тем быстрее это будет.
Теперь вернемся к вашему. В принципе, если вам нужно обновить определенную запись, индекс поможет вам найти эту запись быстрее, чем сканировать всю таблицу.Время, сэкономленное на поиске записи, будет намного больше, чем время, потраченное на обновление индексов.Если вы только вставляете и никогда не читаете, то индексы замедлят вас.Это становится балансом.Если вам нужно прочитать конкретные записи, то очень поможет индекс.Но чем больше индексов, тем медленнее становится запись.