Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > какой тип колонки выбрать?


Автор: boostcoder 30.1.2011, 18:00
всем привет.
нужно в таблице, в одной из колонок, хранить имя файла. файлов может быть очень много. длина имени ничем не ограничивается.
выборка имени будет происходить по sha1 сумме.

какой тип колонки выбрать для хранения имени файла: text, varchar ?

спасибо.

Автор: borisbn 30.1.2011, 21:57
boostcoder, ничего не забыл ? smile
какая СУБД ?

Автор: boostcoder 30.1.2011, 21:59
Цитата(borisbn @  30.1.2011,  21:57 Найти цитируемый пост)
ничего не забыл ?

ы) smile 
mysql.

Автор: null56 30.1.2011, 22:54
CHAR/VARCHAR - максимальный размер 255
если хочешь больше, то смотри в сторону TEXT/BLOB
подробности ниже
http://www.mysql.ru/docs/mysql-man-4.0-ru/reference.html#string-types
хочу добавить, что ключевым отличием является
Цитата

Тип данных TEXT также имеет 4 модификации - TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT, соответствующие упомянутым четырем типам BLOB и имеющие те же максимальную длину и требования к объему памяти. Единственное различие между типами BLOB и TEXT состоит в том, что сортировка и сравнение данных выполняются с учетом регистра для величин BLOB и без учета регистра для величин TEXT. Другими словами, TEXT - это независимый от регистра BLOB. 

и еще, бинарный тип blob может хранить абсолютно любые комбинации байтов, а в тексте неудачное сочетание байтов может скомбинировать символ конца строки и тогда селектом уже всю строку не вытащишь

Автор: borisbn 31.1.2011, 10:03
Честно говоря, не знаю как у "мускулистых" ребят, но в других СУБД поиск по blob если не невозможен, то несколько затруднён. Также проблемотично будет построить индекс по blob.

Хотя... т.к.
Цитата(boostcoder @  30.1.2011,  18:00 Найти цитируемый пост)
выборка имени будет происходить по sha1 сумме

и если эту сумму считать при записи в базу и сохранять там же в базе, то можно и blob использовать

Автор: boostcoder 1.2.2011, 15:54
значит TEXT не подходит, а VARCHAR размером более 1024 будет дико тормозить.

всем спасибо. вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)