powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по размеру строкового поля VARCHAR2
15 сообщений из 15, страница 1 из 1
Вопрос по размеру строкового поля VARCHAR2
    #39911933
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно сохранять в базе данных определенную строку.
В подавляющем большинстве случаев ее длина будет 44 символа (32 байта, закодированные в Base64).
Но в очень редких случаях там может быть другое значение, длиною до 200 символов.
Могу я просто указать для столбца varchar2(200) и рассчитывать, что Oracle сам с этим разберется?
Или лучше сделать два столбца varchar2(44) и varchar2(200)?
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39911939
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
рассчитывать, что Oracle сам с этим разберется?
За столько лет не заинтересоваться внутренним форматом хранения?
Или хотя бы просто включить мозг и задуматься, а что же могло бы значить "var"? - Неужели "fix"?!
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39911949
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я знаю разницу между varchar и char в целом.
А конкретно для Oracle внутренний формат хранения мне знать ни разу не потребовалось.
Если бы разницы не было, то почему не используют всегда varchar2(4000).
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39911951
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
почему не используют всегда varchar2(4000).
Максимальный размер - это ограничение целостности.
Но говно-разработчики, видимо, используют.
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39911957
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Максимальный размер - это ограничение целостности.

Кроме этой причины, она и так понятна.
То есть для Oracle нет никакой разницы, какая длина у поля varchar2?
Это я и хотел уточнить.
В некоторых СУБД если длина строкового поля превышает определенный размер, то его содержимое хранится в отдельной секции данных.
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39911965
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Elic
Максимальный размер - это ограничение целостности.
Кроме этой причины, она и так понятна.
Если причина была понятна, комментарий "почему не используют всегда varchar2(4000)" неуместен.
Alibek B.
Это я и хотел уточнить.
Ты продолжаешь изъясняться на гуманитарийском языке и невозможно формально оценить, что именно ты себе уточнил. Терминология должна различать противоположные в контексте обсуждения сущности.
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39911974
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
То есть для Oracle нет никакой разницы, какая длина у поля varchar2?
RTFM Character Data Types (FAQ)
Alibek B.
В некоторых СУБД если длина строкового поля превышает определенный размер, то его содержимое хранится в отдельной секции данных.
Extended Data Types in Oracle Database 12c Release 1 (12.1)
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39911988
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.

Или лучше сделать два столбца varchar2(44) и varchar2(200)?

нет
лучше сделать один столбец

.....
stax
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39912008
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
Если причина была понятна, комментарий "почему не используют всегда varchar2(4000)" неуместен.

Я подумал об этой причине, когда задавал вопрос, но про себя сформулировал это иначе — указание длины поля во-первых самодокументирует базу (по ней можно понять, какие данные в ней хранятся) и ограничивает заведомо неправильные данные.
Но это как бы декоративные ограничения, их вполне можно заменить на примечания к столбцу и constraint.
Задавая вопрос я хотел уточнить, нет ли более глубоких причин, связанных с самой СУБД.
Например «Oracle резервирует в секции данных объем, исходя из указанной длины поля, поэтому необоснованное завышение длины поля приводит к неэффективному использованию дискового пространства».

-2-
Ты продолжаешь изъясняться на гуманитарийском языке и невозможно формально оценить, что именно ты себе уточнил.

Корректная терминология подразумевает хорошее знание технической документации.
В этом случае у меня бы и вопрос не возник.

Я уже понял ответ на свой вопрос.

Могу я просто указать для столбца varchar2(200) и рассчитывать, что Oracle сам с этим разберется?
правильнее было бы сформулировать как
Если я укажу varchar2(200), то Oracle и сам без дополнительных указаний не будет перерасходовать выделяемое для данных место?
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39912430
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Максимальный размер - это ограничение целостности.

Alibek B.
То есть для Oracle нет никакой разницы, какая длина у поля varchar2?

AFAIK
Есть максимальное ограничение на длину индекса.
Вот оно считается как сумма всех цифиров в описании полей. Т.ч. сделать все поля varchar2(4000) не получится, тогда нельзя будет использовать составные индексы.

p.s. Насколько я помню, в Personal Edition данное ограничение на длину индексов было крайне жестким. В системах которые могли работать на PE специально приходилось длины полей уменьшать по максимому.
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39912436
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Вот оно считается как сумма всех цифиров в описании полей. Т.ч. сделать все поля varchar2(4000) не получится, тогда нельзя будет использовать составные индексы.

О, спасибо.
Это причина будет более весомой.
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39912447
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Две первые ссылки в гугле:

https://docs.oracle.com/cd/B19306_01/server.102/b14237/limits003.htm#i288032
http://www.dba-oracle.com/t_ora_01450_maximum_key_length_exceeded.htm

The maximum allowed index key length depends on your block size. So the minimum allowed size reported in ORA-01450 varies, depending on which block size your index is using:

ORA-01450 maximum key length (758) exceeded -> (2K Block)

ORA-01450 maximum key length (1578) exceeded -> (4K block)

ORA-01450 maximum key length (3218) exceeded -> (8K Block)

ORA-01450 maximum key length (6498) exceeded -> (16K Block)

See MOSC Note 136158.1 and MOSC Note 236329.1 for more details on the ORA-01450 error and key length.
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39912462
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
httрs://docs.oracle.com/cd/B19306_01/server.102/b14237/limits003.htm#i288032
Версия давно устарела.
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39912464
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос по размеру строкового поля VARCHAR2
    #39915487
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.

...Oracle резервирует в секции данных объем, исходя из указанной длины поля...


А это что за секция данных такая появилась в Оракле? :()
Давайте как положено. Есть блоки, экстенты, сегменты.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по размеру строкового поля VARCHAR2
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]