2013-02-21 5 views
-2

Я ищу, чтобы создать модель таблицы атрибута-атрибута, где я хочу, чтобы таблица обрабатывала различные данные. Я хотел бы использовать nvarchar(max), но я обеспокоен тем, что это может повлиять на производительность базы данных (хотя большинство данных будет меньше 50 символов).SQL В модели EAV длина длины nvarchar?

+0

См: [Что точка использования VARCHAR (n) больше?] (https://www.simple-talk.com/sql/database-administration/whats-the-point-of-using-varchar%28n%29-anymore/) - да, это имеет значение - и использование всех '(n) varchar (max)' действительно очень плохой дизайн IMHO –

ответ

2

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

Я говорю «в целом», так как вы не указали, какую базу данных вы используете, и можно себе представить некоторые схемы хранения, в которых определены длины делают разницу

+0

Какой еще db использует 'nvarchar'? – Kermit

+0

Хорошая точка. (N) VARCHAR, в отличие от VARCHAR, это в первую очередь SQL Server (хотя он будет принят и отображен в TEXT SQLite). –

2

Тогда не используйте nvarchar(max); он будет рассматриваться как TEXT. Вы уже используете менее оптимальную модель. Есть ли причина, по которой вы не можете использовать varchar?

См. this thread на определенную длину по сравнению с max.

+1

Комментарий к whi ch, связанный (для SQL Server), указывает, что NVARCHAR (X) и NVARCHAR (MAX) обрабатываются одинаково, если длина сохраненного текста соответствует 8000 символам. Только значения, превышающие 8000 символов, будут подвергаться любому результату - и если у вас есть какие-либо из этих значений, вам понадобится NVARCHAR (> 8000). –

+0

@LarryLustig Спасибо, что указали это. – Kermit

Смежные вопросы