ich auf einer Datumsspalte eine Partition in mysql erstellen bin versucht MV_DATE
ist vom Typ DATE
mysql Partitionierung von Datum
Hier ist die Abfrage -
ALTER TABLE table_name PARTITION BY RANGE (TO_DAYS(MV_DATE))(PARTITION p0 VALUES LESS THAN (TO_DAYS('2015-08-31')));
ich den Fehler A PRIMARY KEY must include all columns in the table's partitioning function
MV_DATE
ist nicht der Primärschlüssel meiner Tabelle.
Ich habe auch versucht ALTER TABLE JOB_VOL_SWH PARTITION BY RANGE ((MV_DATE))(PARTITION p0 VALUES LESS THAN (TO_DAYS('2015-08-31')));
, die den Fehler ERROR 1659 (HY000): Field 'JB_DATE' is of a not allowed type for this type of partitioning
Ich habe ein jetzt ein paar Optionen versucht, wirft aber keine scheinen zu arbeiten.
Gibt es eine besondere Möglichkeit, Partitionierung nach Datumsbereichen zu erstellen? Die MYSQL-Tabelle hat fast eine Milliarde Datenzeilen, was ziemlich genau bedeutet, dass meine Abfragen (virtuell) überhaupt nicht zurückgegeben werden. Daher, um die Tabellen zu partitionieren.
Danke Dylan. Die Spalte 'MV_DATE' kann in meinem Fall nicht eindeutig sein. Keine der Spalten in der Tabelle kann eindeutig sein, mit Ausnahme des Dummy-Primärschlüssels, bei dem es sich um eine Ganzzahl mit automatischer Inkrementierung handelt. Es gibt keine Bedeutung bei der Partitionierung, da ich keine meiner Abfragen verwende. Gibt es keine andere Möglichkeit, die Tabelle zu partitionieren? – usert4jju7
Falsch. Ein AUTO_INCREMENT muss nicht selbst sein. 'PRIMARY KEY (id, mv_date)' ist in Ordnung. Alle KI-Bedürfnisse müssen 'MAX (id)' finden, wenn Sie die Tabelle zum ersten Mal öffnen; und dass PK dafür ausreicht. Sie verlieren jedoch den Check für das Einfügen einer doppelten ID. Aber niemand macht das jemals. [Mehr zur Partitionierung, insbesondere 'BY RANGE (TO_DAYS (..))'] (http://mysql.rjweb.org/doc.php/partitionmaint). –
Rick hat Recht. Das nicht eindeutige mv_date kann dem Primärschlüssel als zusammengesetzter Primärschlüssel hinzugefügt werden. –