Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Поле ENUM и его Изменение (Трава) 27/08/2005 - 14:46:44
      Re: Поле ENUM и его Изменение (Трава) 27/08/2005 - 16:27:52
      Re: ENUM - ENUM - ENUM !!! (TPABA) 27/08/2005 - 19:22:39
      Re: ХРАНЕНИЕ списков ENUM в таблицах MYISAM (Травa) 27/08/2005 - 19:33:18
      Re: ENUM: INSERT и REPLACE (Трава) 28/08/2005 - 00:28:19
      Re: Поле ENUM и его Изменение (Shadow Of Templar) 29/08/2005 - 11:47:05
      Re: Поле ENUM и его Изменение (Shadow Of Templar) 29/08/2005 - 11:50:42
      Re: ужас (Dinky) 29/08/2005 - 20:35:47
      Re: Вопросы остались без ответов (Трава) 01/09/2005 - 15:57:17
      Re: Вопросы остались без ответов (Dinky) 01/09/2005 - 18:56:37
      Re: Спасибо Dinky ! (Трава) 28/09/2005 - 23:48:27
      Re: мониторинг обращения к принтеру (VOVA) 06/03/2007 - 18:12:26



From: Трава - 27/08/2005 - 14:46:44
Subject:Поле ENUM и его Изменение
-----------------
Поле ENUM и его изменение

Формулирую ЗАДАЧУ

Представим себе вполне разумную ситуацию.

1. При создании таблицы было создано поле VALUTA ENUM('RUB','USD')
2. Создан индекс на это поле.
3. В базе было создано еще более 100 разных полей.
4. Один раз в месяц база наполнялась на 1 000 000 записей или больше
5. И выросла до 100 000 000 записей
6. И тут появилась необходимость добавить валюту ЕВРО
7. Решаем запустить команду

ALTER TABLE mytable MODIFY valuta enum('RUB','USD','EUR')

В идеале хочется, чтобы эта команда:

1.Моментально добавила новую валюту в список возможных значений поля
2. Оставила нумерацию RUB=1, USD=2
3. Присвоила EUR=3
4. Не трогала старых записей в таблице и не обновляла и не меняла их содержание.
5. Не пересоздавала всю таблицу.
6. Не производила переиндексацию поля.
7. Моментально бы меняла тип поля с 1байтового до 2байтового, когда список превышает 255 значений


Повторю команду:

ALTER TABLE mytable MODIFY valuta enum('RUB','USD','EUR')

Есть несколько вопросов?

1. Правильна ли написана команда?
2. Кто лучше для этого изменения? CHANGE или MODIFY ?
3. Присвоит ли команда строке 'EUR' номер 3 в списке?
4. Оставит ли команда прежнюю нумерацию RUB=1, USD=2
5. Не будет ли команда обновлять поле valuta по всей базе? (типа update)
6. Будет ли проводится автоматическая переиндексация поля valuta ?
7. Быстро ли сработает эта команда на 100 000 000 записей ?
8. Изменится ли тип поля ENUM с одногобайтного до двухбайтного, если увеличить количество строк в списке с 3 до 300 ?
9. Можно ли добавить новое значение EUR в список ENUM без команды ALTER ?


На часть этих вопросов я могу ответить сам

1. С помошью маленькой модели БД с 2 полями и 10 записями
2. С помошью команды EXPLAIN

Многим будет интересно,

1. Есть ли отличия и усовершенствования во внутренем механизме ENUM между 4.1 и 5 версиями MySQL?

2. Какие изменения планируются командой MySQL AB в отношении ENUM?

3. В каких версиях планируются эти усовершенствования?


:)

Я наверное уже совсем загрузил вопросами насчет ENUM. Но это не шутки. Возможно, тип поля ENUM гораздо эффективнее справочников и вообще эффективнее схемы "снежинка". В схеме "снежинка" есть одна главная таблица. Она содержит основные данные. То есть даты, суммы и КОДЫ стран, валют, цветов БЕЗ их названий. Она соединяется со множеством других таблиц, которые называются Справочники или Словари. Они содержат только НАЗВАНИЯ и КОДЫ стран, валют, цветов.

P.S.
Жаль что до сих пор нет полноценного типа BIT (BOOLEAN) с хранением на диске одного БИТА для каждой записи. То есть 0 или 1 и ничего более. Но это усовершенствование видимо появится только в 5.1. Этот тип хорош для хранения ответов "ДА" и "НЕТ" :) Для уверенных в себе! А тип ENUM допускает ответы "не уверена" и "возможно согласна" – это не для мужчин.





[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
30914



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |