Похоже, что гуглить там - смешанные отчеты, влияет ли размер VARCHAR2
столбца в Oracle на производительность или нет.
Я хотел бы VARCHAR
немного подправить вопрос о размере и надеюсь получить некоторое представление об этом:
Для заданных (многострочных) полей с произвольным текстом ( не таких коротких, как имена), которые вы хотите сохранить в базе данных (Oracle), есть ли смысл (относительно производительности или иным образом) не увеличивать VARCHAR
емкость ( VARCHAR2(4000)
в Oracle), а выбирать меньшее значение, например 1024 или 512, потому что в любом случае этого будет достаточно в 98% случаев.
oracle
performance
varchar
Мартин
источник
источник
Ответы:
Это влияет на использование памяти, особенно когда клиентская программа должна выделить достаточно памяти для получения набора данных.
Имейте в виду, что многие приложения (особенно веб-приложения) используют UTF-8, который является многобайтовым набором символов. Таким образом, вы должны рассматривать символы, а не байты.
Если бы я ожидал более тысячи символов, я бы активно рассматривал CLOB. Я бы подумал о том, будет ли он хранить обычный текст или какую-либо форму разметки (wiki / html?), Используемую с языками, отличными от евро. Например, Вопросы и Ответы здесь будут CLOB, но комментарии могут поместиться в VARCHAR.
Если вы максимизируете VARCHAR, то через шесть месяцев кто-то захочет снова увеличить его, и вы будете пинать себя за то, что не используете CLOB.
источник
Как правило, нет никаких проблем с производительностью, хотя есть побочные проблемы, которые могут иметь значение для вас. Ограничение для a
varchar
следует рассматривать как ограничение, как и любое другое - оно должно обеспечивать соблюдение бизнес-правила.IMO вопрос, который вы должны задать: «Хочу ли я, чтобы данные в свободном тексте, хранящиеся в этом поле, были длиннее n байтов / символов» - это единственный определяющий фактор при выборе между
varchar(512)
иvarchar(4000)
.Обратите внимание, что я предполагаю, что вы говорите о
varchar
типе SQL - ситуация иная,pl/sql
и выбор длины может иметь решающее значение для распределения памяти.источник
clob
, не так ли?Если меньшее значение будет работать для 98% случаев, но для 100% случаев потребуется Varchar2 (4000), то у вас нет другого выбора, кроме как использовать большее значение . Создание отдельной таблицы для 2% значений, а затем координация операций вставки / выбора и т. Д. Привели бы к усложнению, которое уничтожило бы любые преимущества памяти или производительности из-за отсутствия расширения поля.
источник