Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
определенно не varchar
операции с числами всегда быстрее, чем со строками
----- Чем больше узнаю, тем больше я не знаю.
Мелкий
Отправлено: 08 Мая, 2013 - 16:13:17
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
tinyint если нужно что-то булево.
В enum лучше никогда числовые значения не загонять - чревато очень трудноуловимыми ошибками из-за обработки enum'а как числа самого по себе.
enum для некоторого множества текстовых обозначений.
Tsigyr пишет:
для заказов (если 1 -новый, если 2 - проверенный, если 3 - выполненный)
enum. С нормальными, человекочитаемыми значениями.
----- PostgreSQL DBA
KingStar
Отправлено: 08 Мая, 2013 - 16:13:59
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
почему не TINYINT(1) UNSIGNED ?
----- То что программа работает, не означает что она написана правильно!
DelphinPRO
Отправлено: 08 Мая, 2013 - 16:47:32
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
KingStar пишет:
почему не TINYINT(1) UNSIGNED ?
потому что
Мелкий пишет:
enum. С нормальными, человекочитаемыми значениями.
ключевой момент - "человекочитаемыми значениями". текст всегда понятнее, нежели безликое число.
А с точки зрения представления внутри БД - что tinyint, что enum - занимают один байт и хранятся в виде числа
----- Чем больше узнаю, тем больше я не знаю.
caballero
Отправлено: 08 Мая, 2013 - 17:07:10
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
enum - если не потребуется переносимость на другую БД.
Лично я предпочитаю не использовать фичи заточенные на один тип БД.
Покинул форум
Сообщений всего: 231
Дата рег-ции: Окт. 2011
Помог: 5 раз(а)
[+]
KingStar пишет:
почему не TINYINT(1) UNSIGNED ?
В данном случае TINYINT будет принимать значения от 0 до 255.
VARCHAR хорош своей читаемостью, New, Approved, Completed смотрятся лучше, чем 1, 2, 3. Но тем не менее, это строка и это скажется на производительности.
ENUM неплохой вариант, но, как сказали выше, он зависим от платформы, т.к. добавление новых значений стандартным путем через ALTER TABLE приводит к полному перестроению таблицы.
TINYINT лучше всего. Операции с числами эффективны в плане производительности, никаких проблем как с ENUM нет. Но читаемость таблицы падает, хотя это довольно спорный минус.
P.S. В MySQL 5.1 вроде исправили работу ALTER TABLE в ENUM, так что вероятно у меня несколько устаревшая информация касательно этого типа данных.
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
_Dark_ читай мою подпись
----- То что программа работает, не означает что она написана правильно!
Мелкий
Отправлено: 08 Мая, 2013 - 17:42:53
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
KingStar пишет:
ну во-первых не 0-255, а 0-9
Именно что 0-255.
----- PostgreSQL DBA
KingStar
Отправлено: 08 Мая, 2013 - 17:43:36
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
я всегда указываю число, которое должно попадать в таблицу, мало того я переменные указываю какой тип должен передаваться, говно писать все мы умеем, а по нормальному
----- То что программа работает, не означает что она написана правильно!
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.