Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Что лучше использовать Enum('yes','no') или timyint(1) ?
для использования в полях где есть только 2 значения. Что более хорошо с точки зрения скорости работы и удобности использования.
Заранее спасибо за внятные мнения и ответы!
Неактивен
BIT(1)
Если таких полей несколько, то они будут паковаться в один байт.
ENUM хорошо использовать тогда, когда приложению удобно обращаться
к значениям поля по имени. В случае с битовым полем — по-моему,
удобство сомнительное
Неактивен
А если посмотреть на эту проблему с точки зрения производительности ?
что будет работать быстрее ?
Отредактированно vencendor (05.11.2009 13:39:56)
Неактивен
Если Вы собираетесь выбирать по этому полю, то пересмотрите архитектуру
программы
Бинарные поля не могут быть селективными из-за количества значений, выбрать
половину строк последовательно всегда быстрее, чем по индексу. Разницы
в производительности при сравнении в процессоре Вы не заметите как бы Вы
ни старались
Неактивен
Тогда в нашей битве выигрывает enum('yes','no') поскольку с точки зрения производительности этот подход не уступает зато имеет несколько преимушеств
1. можно эмулировать использование конкурента enum('1','0');
2. Позволяет при надобности расширить спектр возможных значений: enum('yes','no','mayby');
3. Позволяет обращаться к полям по более дружественному интерфейсу enable='yes'
я прав ?
Неактивен
Смотря чего Вы хотите добиться Если сделать дружественный интерфейс из
двух элементов, то да
Неактивен
На мой взгляд для производительности нет ни какой разницы между Enum и Tinyint, т.к. Enum значения хранятся в цифровом виде.
И когда выбираешь по enum полю enable='yes' значение yes приводится мускулом к тому числу с которое задано для yes в enum последовательности и дальше все происходит как при обычном поиске по полю tinyint(1). Не думаю что это сложная операция по строке определить цифру.
Единственное на ч то стоит обратить внимание это объем занимаемых данных полем, для tinyini это всегда 1 байт при диапазоне хранимых чисел от -128 до 127
Для enum может быть 1 или 2 байта в зависимости от числа допустимых значений. Почемуто думаю, что до 256 значений оно будет занимать 1 байт , дальше 2 байта
Отредактированно denisimus (03.12.2009 17:21:41)
Неактивен
Страниц: 1