Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / VARCHAR vs CHAR / 8 сообщений из 8, страница 1 из 1
17.08.2008, 00:43:35
    #35491298
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VARCHAR vs CHAR
В таблицах будут храниться имена и пути к файлам, соответственно длины текстовых строк от ~5 и более.
База mysql, также будет fulltext search.
Всегда пользовался форматом varchar, но при изучении вопроса использования типов полей случайно наткнулся вот на это (выделено болдом)
автор
...
Поле VARCHAR может быть любой длинны включая реализационно-определя-
емый максимум. Этот максимум может меняться от 254 до 2048 символов
для VARCHAR, и до 16000 символов для LONG. LONG обычно используется
для текста пояснительного характера или для данных, которые не могут
легко сжиматься в простые значения полей; VARCHAR может использоваться
для любой текстовой строки чья длина может меняться. Между прочим, не
всегда хорошо использовать VARCHAR вместо CHAR. Извлечение и модифици-
рование полей VARCHAR - более сложный, и следовательно более медленный
процесс, чем извлечение и модифицирование полей CHAR. Кроме того, не-
которое количество памяти VARCHAR, остается всегда неиспользованной (в
резерве) для гарантии вмещения всей длины строки.
Вы должны просчиты-
вать, насколько значения полей могут меняться по длине, а также, спо-
собны ли они к объединению с другими полями, перед тем как решить, ис-
пользовать CHAR или VARCHAR. Часто, тип LONG используется для сохране-
ния двоичных данных. Естественно, что использование размера такого
"неуклюжего" поля будет ограничивать оперативность SQL.
...

Вот теперь думаю, какой тип принять во внимание.
Записей будет более миллиона, скорость поиска важна.
Формат CHAR никогда не использовал, может кто поделится опытом?
...
Рейтинг: 0 / 0
17.08.2008, 02:23:24
    #35491332
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VARCHAR vs CHAR
BIONКроме того, некоторое количество памяти VARCHAR, остается всегда неиспользованной (в резерве) для гарантии вмещения всей длины строки.Фактически, здесь утверждается, что в MySQL нет разницы в способе хранения данных char и varchar и, таким образом, смысл в типе varchar попросту пропадает. Как-то слабо верится, попробуйте найти подтверждение в других источниках.
...
Рейтинг: 0 / 0
17.08.2008, 21:15:20
    #35491681
shelsoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VARCHAR vs CHAR
автор
1) Вы забыли выделит болдом "Вы должны просчитывать, насколько значения полей могут меняться по длине, а также, способны ли они к объединению с другими полями"
2) Это значит, что вы должны рассмотреть в каком типе хранить например "фамилию" и "номер паспорта"


______________________________________________________
Давайте считать обступившее нас со всех строн коричневое море шоколадным
...
Рейтинг: 0 / 0
18.08.2008, 11:33:27
    #35492136
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VARCHAR vs CHAR
авторС MySQL не знаком, но во многих БД для экономии дискового пространства производится сжатие данных с переменной длиной. Поведение скорости выборки трудно спрогнозировать, потому что с одной стороны увеличиваются затраты на поиск строки в кэше, а с другой стороны уменьшается количество чтений с диска в кэш, а это во многом определяющая стадия доступа к данным. Так что все зависит от прогноза на будущее: какие строки будут храниться, сильно ли они будут отличаться? Также зависит от того, какие еще столбцы есть в таблицк. Если не сильно, то CHAR, если сильно - поэкспериментируйте с тестовыми данными.
...
Рейтинг: 0 / 0
18.08.2008, 16:25:52
    #35493030
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VARCHAR vs CHAR
Char следует применять только, если поле имеет четко заданную длину или размер может варьироваться в небольших размерах, иначе будет значительный перерасход размера строки, соответственно, меньше записей в странице и меньшая скорость выборки последних.
Для varchar храниться дополнительная информация о длине строки и резервируется дополнительное пространство для избежания разделения страниц при udpdate.Это тоже снижает производительность.
В твоем случае только varchar
...
Рейтинг: 0 / 0
18.08.2008, 19:44:39
    #35493527
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VARCHAR vs CHAR
BIONслучайно наткнулся вот на это автор
...
Кроме того, не
которое количество памяти VARCHAR, остается всегда неиспользованной (в
резерве) для гарантии вмещения всей длины строки.
...
Где вы такое накопали? Обычно бывает точно наборот - под CHAR резервируется столько места, сколько назначено, а под VARCHAR место выделяется динамически под фактический размер данных. BIONВот теперь думаю, какой тип принять во внимание.
Записей будет более миллиона, скорость поиска важна.
Формат CHAR никогда не использовал, может кто поделится опытом?Используйте VARCHAR/VARCHAR2 (точное название зависит от СУБД) и не забивайте себе голову. CHAR есть смысл использовать, имхо, довольно редко.
...
Рейтинг: 0 / 0
18.08.2008, 20:07:10
    #35493549
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VARCHAR vs CHAR
BION wrote:

> В таблицах будут храниться имена и пути к файлам, соответственно длины
> текстовых строк от ~5 и более.
> База mysql, также будет fulltext search.
> Всегда пользовался форматом varchar, но при изучении вопроса
> использования типов полей случайно наткнулся вот на это (выделено болдом)
> автор

Разница, о которой тут говорится, всегда незначительная - она гораздо
меньше (на несколько порядков), чем время чтения с диска - самой
длительной операции в СУБД, поэтому этой разницей можно принебречь,
а на проблему плюнуть. Единственное, если у вас в поле тупо ВСЕГДА
N символов, типа как 'Y' или 'N' или gender = 'm'/'f' или какой-то
шифр типа штрих-кода, с фиксированным кол-вом знаков, то тогда
грех не использовать CHAR просто потому, что VARCHAR не нужен.

Если мы рассматриваем конкретно MySQL, то тут нужно отметить,
что то, как реально реализуется VARCHAR, зависит целиком от
storage engine. Часто char реализуется внутри как varchar,
просто чтобы не париться с лишним типом данных, так
точно было в SolidDB (мир его праху) и, кажется, так
реализовано в InnoDB.

Подобное может наблюдаться и в других СУБД, поскольку оба типа данных
стандартизированы, и их нужно поддерживать, а внутри представление
обоих типов данных может быть одинаковым (обычно varchar, потому
что у char могут быть накладные расходы при хранении в виде хвостовых
пробелов).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
19.08.2008, 00:50:49
    #35493789
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VARCHAR vs CHAR
Всем большое спасибо за советы!
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / VARCHAR vs CHAR / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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