|
|
|
VARCHAR vs CHAR
|
|||
|---|---|---|---|
|
#18+
В таблицах будут храниться имена и пути к файлам, соответственно длины текстовых строк от ~5 и более. База mysql, также будет fulltext search. Всегда пользовался форматом varchar, но при изучении вопроса использования типов полей случайно наткнулся вот на это (выделено болдом) автор ... Поле VARCHAR может быть любой длинны включая реализационно-определя- емый максимум. Этот максимум может меняться от 254 до 2048 символов для VARCHAR, и до 16000 символов для LONG. LONG обычно используется для текста пояснительного характера или для данных, которые не могут легко сжиматься в простые значения полей; VARCHAR может использоваться для любой текстовой строки чья длина может меняться. Между прочим, не всегда хорошо использовать VARCHAR вместо CHAR. Извлечение и модифици- рование полей VARCHAR - более сложный, и следовательно более медленный процесс, чем извлечение и модифицирование полей CHAR. Кроме того, не- которое количество памяти VARCHAR, остается всегда неиспользованной (в резерве) для гарантии вмещения всей длины строки. Вы должны просчиты- вать, насколько значения полей могут меняться по длине, а также, спо- собны ли они к объединению с другими полями, перед тем как решить, ис- пользовать CHAR или VARCHAR. Часто, тип LONG используется для сохране- ния двоичных данных. Естественно, что использование размера такого "неуклюжего" поля будет ограничивать оперативность SQL. ... Вот теперь думаю, какой тип принять во внимание. Записей будет более миллиона, скорость поиска важна. Формат CHAR никогда не использовал, может кто поделится опытом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2008, 00:43 |
|
||
|
VARCHAR vs CHAR
|
|||
|---|---|---|---|
|
#18+
BIONКроме того, некоторое количество памяти VARCHAR, остается всегда неиспользованной (в резерве) для гарантии вмещения всей длины строки.Фактически, здесь утверждается, что в MySQL нет разницы в способе хранения данных char и varchar и, таким образом, смысл в типе varchar попросту пропадает. Как-то слабо верится, попробуйте найти подтверждение в других источниках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2008, 02:23 |
|
||
|
VARCHAR vs CHAR
|
|||
|---|---|---|---|
|
#18+
автор 1) Вы забыли выделит болдом "Вы должны просчитывать, насколько значения полей могут меняться по длине, а также, способны ли они к объединению с другими полями" 2) Это значит, что вы должны рассмотреть в каком типе хранить например "фамилию" и "номер паспорта" ______________________________________________________ Давайте считать обступившее нас со всех строн коричневое море шоколадным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2008, 21:15 |
|
||
|
VARCHAR vs CHAR
|
|||
|---|---|---|---|
|
#18+
авторС MySQL не знаком, но во многих БД для экономии дискового пространства производится сжатие данных с переменной длиной. Поведение скорости выборки трудно спрогнозировать, потому что с одной стороны увеличиваются затраты на поиск строки в кэше, а с другой стороны уменьшается количество чтений с диска в кэш, а это во многом определяющая стадия доступа к данным. Так что все зависит от прогноза на будущее: какие строки будут храниться, сильно ли они будут отличаться? Также зависит от того, какие еще столбцы есть в таблицк. Если не сильно, то CHAR, если сильно - поэкспериментируйте с тестовыми данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 11:33 |
|
||
|
VARCHAR vs CHAR
|
|||
|---|---|---|---|
|
#18+
Char следует применять только, если поле имеет четко заданную длину или размер может варьироваться в небольших размерах, иначе будет значительный перерасход размера строки, соответственно, меньше записей в странице и меньшая скорость выборки последних. Для varchar храниться дополнительная информация о длине строки и резервируется дополнительное пространство для избежания разделения страниц при udpdate.Это тоже снижает производительность. В твоем случае только varchar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 16:25 |
|
||
|
VARCHAR vs CHAR
|
|||
|---|---|---|---|
|
#18+
BIONслучайно наткнулся вот на это автор ... Кроме того, не которое количество памяти VARCHAR, остается всегда неиспользованной (в резерве) для гарантии вмещения всей длины строки. ... Где вы такое накопали? Обычно бывает точно наборот - под CHAR резервируется столько места, сколько назначено, а под VARCHAR место выделяется динамически под фактический размер данных. BIONВот теперь думаю, какой тип принять во внимание. Записей будет более миллиона, скорость поиска важна. Формат CHAR никогда не использовал, может кто поделится опытом?Используйте VARCHAR/VARCHAR2 (точное название зависит от СУБД) и не забивайте себе голову. CHAR есть смысл использовать, имхо, довольно редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 19:44 |
|
||
|
VARCHAR vs CHAR
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 20:07 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35493549&tid=1543707]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 359ms |

| 0 / 0 |
