Добрый день! Есть таблица со статьями, хочу разбить ее на разделы. Как я понял, разбить таблицу можно только по первичному ключу? у меня первичный ключ это "id". Но я хочу разбить по полю "date" (unixtime). 1. Объясните новичку, что значит "Таблица может иметь только один первичный ключ, который может состоять из одного или нескольких полей." я добавил date в первичный ключ вторым полем (я так понимаю), но в чем прикол? ADD PRIMARY KEY (`id`, `date`) просто date же не уникальное поле, и в чём вообще смысл нескольких полей? вообщем, разбить получилось, как-то так: Код (Text): ALTER TABLE stats PARTITION BY RANGE(YEAR(date))( PARTITION t_08 VALUES LESS THAN(2008), PARTITION t_09 VALUES LESS THAN(2009), PARTITION t_now VALUES LESS THAN(MAXVALUE) ); только на локалке чет ошибку выдало на YEAR пришлось с unixtime работать вопросы: 2. Действительно быстродействие возрастает? По логике, это гениально)) у меня myisam 3. работа с БД абсолютно не меняется? запросы переписывать не нужно и тп? можно импортировать в таблицу материал без дополнительных ухищрений? он сам "раскидается" в нужные разделы? экспорт/импорт/резервное копирование всё как обычно?
Уникальный ключ был 123, теперь он 1232007-06-20 15:24:00 Другой уникальный ключ - 1232007-06-20 15:24:01
@Drunkenmunky а в чем смысл? если 123 итак было уникальным? Или иногда так сделать не получается? типа, чтобы улучшить уникальность? --- Добавлено --- Если на рабочей БД добавить второе поле date? никаких последствий? просто изменится значения первичного ключа у всех записей в таблице?
123 теперь не уникальный ключ. А в сочетании с датой уникальный. Смысл в том, что у некоторой уникальной записи в одной таблице есть уникальные свойства в другой таблице. И их может быть больше, чем одно.
раз вы по году партционируете, то наверное вам и ключ надо по году ADD PRIMARY KEY (`id`, YEAR(date))
@ADSoft вылетела ошибка, что-то типа нет такого поля YEAR(date) да ладно, это не суть, буду писать VALUES LESS THAN(1598950124) мне больше другие вопросы интересуют @Drunkenmunky видать мне это образно никак не понять)) если столкнусь сам, то тогда и дойдет)) для чего это и зачем применять если конечно вам не лень на пальцах мне объяснить)) типа вот таблицы test1 и test2... )) но я не настаиваю касательно партиционирования, если для партиционирования я добавлю второе поле date в первичный ключ, на рабочем сайте, это как-то отразится на его работе? или ничего не изменится и по поводу 2 и 3 вопроса, я понимаю они очевидные, но очень хочется услышать мнение людей кто на практике всё это использует, есть ли подводные камни и тп --- Добавлено --- пардон, это мой косяк, но все равно выдает ошибку синтаксиса
Вспомнил тут вам простой пример. Допустим у вас есть директории /usr/home/local/dir/ и /usr/home/local/dir1/ Присваиваете им уникальный id в таблице `t1` А в таблице `t2` храните список файлов в них. И id директории. Имена файлов, само собой так же должны быть уникальны. Но вам периодически их нужно сортировать по расширению. Для этого можно применять сложные манипуляции, а можно просто заранее разбить их на имя и расширение, и уникальный индекс применить к этим трем полям. При добавлении в таблицу `t2` строки 123, 'index','html', дублирование записи не произойдет.