[Homework] Бази данни - SQL Performance - Problem 3
Здравейте, колеги,
Отварям темата, понеже срещнах затруднения със задачата и се надявам да успеем да си помогнем взаимно. След известно ровене в нета стигнах до следния код за партишънинг по години:
CREATE TABLE performance_test (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
date DATETIME,
text VARCHAR(500)
)
PARTITION BY RANGE (YEAR(date)) (
PARTITION 90s VALUES LESS THAN (2001),
PARTITION 2000s VALUES LESS THAN (2011),
PARTITION 2010s VALUES LESS THAN (2021)
);
Получавам следната грешка:
Error Code: 1503. A PRIMARY KEY must include all columns in the table's partitioning function
След ровене в гугъл намерих следното:
https://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html
Явно не мога да го разбера, написаното ми звучи като абсолютна глупост. Нито искам датата да е уникална, нито искам да включвам Id-то в комбинация с дата за уникалност. Някой борил ли се е със задачата? Нека сподели.
Да, таблицата става така, но това е против логиката на нещата. Ако задам като Primary Key комбинацията от ID и Date, какво ще попречи да имам един запис с Id 5 Date 01.02.2010 и още един ID 5 Date 10,05.2016? Нали идеята на ID е да бъде уникално? Не мога да разбера защо са направили нещата така.
Нали на ID-то имам AUTO_INCREMENT - няма как да се случи повторение.
Май така ще трябва да го направя, колкото и да изглежда абсурдно. Мерси.