Типы персонажей Oracle - PullRequest
       28

Типы персонажей Oracle

1 голос
/ 22 апреля 2009

Является ли использование VARCHAR2 (1 байт) менее эффективным, чем использование CHAR (1 байт)?

Является ли использование VARCHAR2 (2000 байт) менее эффективным, чем использование CHAR (1 байт), если я никогда не добавляю в поле значение длиннее одного символа?

** Под эффективностью я имел в виду эффективность как во времени (поиск), так и в пространстве (хранение).

1 Ответ

5 голосов
/ 22 апреля 2009

В зависимости от вашего набора символов, CHAR (1 байт) может не сохранять какой-либо конкретный символ, поэтому могут быть различия между VARCHAR2 (2000 байт) и CHAR (1 байт), если мы говорим о многобайтовом символы.

В целом, в SQL (правила PL / SQL немного отличаются) VARCHAR2 (2000 байт) не будет занимать больше памяти, чем CHAR (1 байт), если вы храните только 1 байт данных ( Я предполагаю, что «эффективный» переводится в первую очередь на эффективность хранения). VARCHAR2 (2000 байт) часто приводит к тому, что клиентское приложение выделяет 2000-байтовый буфер для хранения содержимого поля, поскольку клиентское приложение заранее не знает фактический размер данных, что может привести к чрезмерному использованию клиентским приложением количество оперативной памяти Это может или не может привести к реальной проблеме, хотя. Большинство клиентских приложений не вредит оперативной памяти, и большинство результирующих наборов не возвращают клиенту миллионы строк, поэтому тратить пару k на пару сотен строк может не иметь большого значения.

Существует поток AskTom , который более детально раскрывается, особенно в отношении правил PL / SQL.

...