|
|
|
| В книгах часто встречаются ситуации, когда создается таблицу напрмер с тремя полями name, email, url. При этом, для name выбирается тип столбца varchar, а для name и url - tinytext?
Если не сложно, объясните когда нужно брать tinytext, а когда varchar и почему. | |
|
|
|
|
|
|
|
для: rusbi
(29.06.2007 в 07:38)
| | tinytext - max. кол-во символов до 255 (думаю то, что надо для URL)
varchar - может иметь произвольную длину. Вам ее и указывать. | |
|
|
|
|
|
|
|
для: sasch
(29.06.2007 в 07:59)
| | Так varchar тоже может иметь макс - 255 символов, просто как я понял у varchar нужно обязательно указывать длину, а у tinytext не обязательно. | |
|
|
|
|
|
|
|
для: rusbi
(29.06.2007 в 08:08)
| | Вам ведь заведомо не известно сколько символов будет в URL-e. По-этому и tinytext. (Гадать, думаю не стоит)
А с name более или менее угадать можно. (Уж точно меньше чем в URL). | |
|
|
|
|
|
|
|
для: sasch
(29.06.2007 в 08:15)
| | >Вам ведь заведомо не известно сколько символов будет в URL-e. По-этому и tinytext.
Так то да, но ведь и для имени мы тоже заведо не знаем сколько будет символов (имена тоже разные бывают), однако же для имени указывается varchar(20), а для url просто tinytext. Хотя, наверное это не так и важно и не будет большой беды если поставить например вместо tinytext тип поля varchar(255). | |
|
|
|
|
|
|
|
для: sasch
(29.06.2007 в 08:15)
| | >>> просто как я понял у varchar нужно обязательно указывать длину
Да. varchar(число) | |
|
|
|
|
|
|
|
для: sasch
(29.06.2007 в 08:20)
| | "Столбцы типов BLOB и TEXT могут индексироваться в версии MySQL 3.23.2 и более новых. В столбцах типов BLOB и TEXT не производится удаление концевых символов, как это делается для столбцов типа VARCHAR.
Для столбцов BLOB и TEXT не может быть задан атрибут DEFAULT- значения величин по умолчанию... Следует учитывать, что внутренним представлением любой величины типа BLOB или TEXT является отдельно размещенный объект - в противоположность всем остальным типам столбцов, для которых память выделяется нно для столбца при открытии таблицы.
B или TEXT является отдельно размещенный объект - в противоположность всем остальным типам столбцов, для которых память выделяется единовременно для столбца при открытии таблицы.
" | |
|
|
|
|
|
|
|
для: rusbi
(29.06.2007 в 08:08)
| | по книге SoftTime'овцев
специальный индекс FULLTEXT поддерживается для таблиц MyISAM столбцов типа char, varchar и text
т.е. получается если хотите использовать FULLTEXT то соответственно столбец varchar должен быть,
если же не планируете FULLTEXT, то можно и tinytext | |
|
|
|
|
|
|
|
для: sapEngine
(29.06.2007 в 08:32)
| | По их книгам занимаюсь. Видимо действительно, ещё в индексах дело. Спасибо всем за ответы! | |
|
|
|
|
|
|
|
для: rusbi
(29.06.2007 в 07:38)
| | обычно varchar применяется для ключевых полей, лидирующие и хвостовые пробелы в которых могут обрезаться.
text - для полей с данными, для которых важно точное - до последнего пробела - хранение содержимого.
применять tinytext, как правило, неоправданно, кроме случаев, очень коротких строк.
Для URI, например, просто нельзя. Какой смысл экономить один - три байта? | |
|
|
|