SQL: длинный varchar и влияние на производительность - PullRequest
2 голосов
/ 05 августа 2011

Я работаю с базой данных, которая работает очень медленно. Мы используем ASP.NET для доступа к базе данных. Я новичок в базе данных и обнаружил, что некоторые вещи сделаны неправильно. Я хочу получить более осведомленное мнение об этом.

В нашей базе данных varchar (255) использовался почти для всех полей символьного типа, включая zip_codes, text_ids, имя, адрес и номера телефонов. В одной таблице их около 60, и некоторые из них также используются для сравнения. У меня вопрос, сколько тормозов на производительность? Должен ли я изменить это или оставить все как есть. Я ищу ответ, который может выделить проблему с производительностью.

Редактировать: Так что я думаю, что мне нужно работать с подключением, а не varchar. Может кто-нибудь опубликовать ответ на мой вопрос Могу ли я использовать пул соединений с SQLDatasource? . Для входа требуется около 20 секунд, после чего он становится приемлемым, но все еще медленным. База данных и приложение находятся на одной машине.

Ответы [ 4 ]

2 голосов
/ 05 августа 2011

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

2 голосов
/ 05 августа 2011

Оставь как есть. С этим определением не должно возникнуть проблем (по крайней мере, если общий размер записи не превышает 8 КБ на MS SQL Server). Скорее всего, ваша проблема связана с вашими запросами и, следовательно, косвенно связана с определением и использованием индекса.

Поскольку у вас нет индексов, кроме первичного ключа, вы должны проверить свои медленно выполняющиеся запросы и добавить индексы в поля фильтра в предложении WHERE. Возможно, вы захотите рассмотреть следующую подборку советов, касающихся производительности SQL Server:

Советы и рекомендации по производительности SQL Server

1 голос
/ 05 августа 2011

Длина полей varchar менее важна, чем их использование для чисел, таких как почтовые индексы, номера телефонов и т. Д.

Числа занимают LOT меньше места, чем строка. Например:

28245 как smallint занимает 2 байта

'25245' как varchar(255) принимает (5 байтов для данных) + (2 байта для хранения длины) = 7 байтов

У вас также будут странные проблемы с сортировкой, поскольку строки сортируются иначе, чем числа.

Как говорится, между varchar(20) и varchar(255) нет разницы в производительности. Varchar - это varchar - это varchar, и единственным отличием является ОГРАНИЧЕНИЕ пространства, которое они могут занять в поле.

0 голосов
/ 05 августа 2011

Если у вас нет ОГРОМНОГО количества данных в этой таблице, я не думаю, что тип поля будет влиять на производительность.Всякий раз, когда меня просят взглянуть на повышение производительности базы данных, я обычно могу оказать большое влияние, улучшив запросы, которые обращаются к данным и создают лучшие индексы для данных, которые уже есть.

Кроме того, этобаза данных и веб-сайт работают на одном сервере или между ними может быть медленное соединение, вызывающее задержку?

...