URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6936
[ Назад ]

Исходное сообщение
"Partition в MySQL (мальчики - налево, девочки - направо)"

Отправлено Microname , 06-Авг-10 20:31 
Доброго времени суток.

Возможно ли одновременное использование partition и id auto_encrement поля.

Задача такая. Есть большая (10 000 000) записей таблица пользователей.
хотел сделать partition by list M/W соответственно по мальчикам/девочкам

CREATE TABLE IF NOT EXISTS `u` (
  `userID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `sex` tinyint(1) NOT NULL,
  PRIMARY KEY (`userID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8
PARTITION BY LIST(sex) (
PARTITION man VALUES IN (0),
PARTITION woman VALUES IN (1)
)

В ответ получаю

#1503 - A PRIMARY KEY must include all columns in the table's partitioning function

Я так понимаю уникальность записей работает только в пределах одного partition ?
Если это так, то ни планируется ли исправление Mysql в одной из следующих версий ?

In MySQL 5.1.7 and earlier, names of subpartitions were required to be unique within each partition, but did not have to be unique
within the table as a whole. Beginning with MySQL 5.1.8, subpartition names must be unique across the entire table. For example,
the following CREATE TABLE statement is valid in MySQL 5.1.8 and later:


Содержание

Сообщения в этом обсуждении
"Partition в MySQL (мальчики - налево, девочки - направо)"
Отправлено Microname , 06-Авг-10 22:06 
Хочу добавить

Можно сделать так, заменить
PRIMARY KEY (`userID`)
на
PRIMARY KEY (`userID`,sex)

Чудо ! AUTO_INCREMENT сохранился. Правда при принудительной вставке userID
нарушается целостность данных

userID  name    sex
1     tanya     0
2     vova     1
1     vasya     1