Проблема после преобразования столбца таблицы из текста в Varchar (не более) - PullRequest
3 голосов
/ 28 апреля 2011

У меня была таблица Person с колонкой PersonDescription, которая имела тип «текст».У меня были проблемы с обновлением этого столбца, поэтому я запустил скрипт

ALTER TABLE dbo.Person ALTER COLUMN PersonDescription VARCHAR (макс.)

, чтобы изменить столбец на varchar (Максимум).Это было все хорошо и побежал мгновенно.Однако теперь я заметил, что всякий раз, когда я пытаюсь обновить этот столбец, выполнение занимает до 3-4 минут.Запрос:

Обновление Person set Set PersonDescription = 'person description', где personid = 18

После запуска этого обновления оно запускается мгновенно.Это все нормально, но когда это изменение поступает в производство, в этой таблице содержится миллион записей, поэтому каждый, кто входит в систему, будет использовать тайм-аут при запуске.Может кто-нибудь сказать мне, как я могу предотвратить это.Есть ли другой сценарий и т. Д., Что мне нужно запустить.После запуска обновления я увидел, что Statman работает на sqlserver, на что уходит время.

спасибо, Найл

1 Ответ

0 голосов
/ 05 декабря 2013

По моему мнению, проблема связана с вычислением SQL-сервера, если он должен хранить данные в BLOB-объекте или в строке.

См .: Использование varchar (MAX) против TEXT на SQL Server

"Тип VARCHAR (MAX) является заменой для TEXT. Основное отличие состоит в том, что TEXTТип всегда будет хранить данные в BLOB-объекте, тогда как тип VARCHAR (MAX) будет пытаться сохранить данные непосредственно в строке, если он не превышает ограничение 8 КБ, и в этот момент он сохраняет их в BLOB-объекте. "

Вы также используете полнотекстовый индекс?Отключить индексы, обновить, перестроить индексы.

Вы пытались создать новую таблицу и скопировать в нее записи?У вас все еще есть проблемы с производительностью?

...