У меня очень специфическая проблема с производительностью на работе!
В системе, которую мы используем, есть таблица, которая содержит информацию о текущем процессе работы. В одном из полей содержится электронная таблица, содержащая метаданные о процессе (не спрашивайте меня, почему !! И НЕТ, Я НЕ МОГУ ЕГО ИЗМЕНИТЬ !!)
Проблема заключается в том, что эта электронная таблица хранится в поле IMAGE в SQL Server 2005 (в базе данных, настроенной на совместимость с SQL 2000).
Эта таблица в настоящее время содержит 22K + строк и даже простой запрос, подобный этому:
SELECT TOP 100 *
FROM OFFENDING_TABLE
Требуется 30 секунд для извлечения данных в Query Analyzer.
Я думаю об обновлении совместимости до SQL 2005 (как только мне сообщили, что приложение может с этим справиться).
Второе, о чем я думаю, это изменить тип данных столбца на varbinary(max)
, но я не знаю, повлияет ли это на приложение.
Еще одна вещь, которую я рассматриваю, - это использовать sp_tableoption
для установки large value types out of row
на 1
, поскольку в настоящее время 0
, но у меня нет информации, если это повысит производительность.
Кто-нибудь знает, как улучшить производительность в таком сценарии?
Отредактировано для уточнения
Моя проблема в том, что у меня нет контроля над тем, что приложение запрашивает у SQL Server, и я сделал некоторые размышления над ним (приложение представляет собой веб-сайт .NET 1.1), и оно использует поле с ошибками для некоторых внутренних вещей, которые понятия не имею, что это такое.
Мне нужно улучшить общую производительность этой таблицы.