Mysql
 sql >> Database >  >> RDS >> Mysql

Come partizionare una tabella MySQL in base alla colonna char?

Il partizionamento in MySQL 5.1 può gestire solo colonne intere (Fonte ). Puoi utilizzare solo poche funzioni di partizionamento su colonne non intere. Ad esempio:

CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
   ENGINE=INNODB
   PARTITION BY HASH( MONTH(tr_date) )
   PARTITIONS 6;

Puoi anche utilizzare partizionamento delle chiavi in MySQL 5.1, purché la chiave primaria includa tutte le colonne nella funzione di partizionamento della tabella:

CREATE TABLE k1 (
   id CHAR(3) NOT NULL PRIMARY KEY,
   value int
)
PARTITION BY KEY(id)
PARTITIONS 10;

D'altra parte, in MySQL 5.5, puoi usare partizionamento delle colonne dell'intervallo o partizionamento delle colonne dell'elenco su un'ampia varietà di tipi di dati, comprese le colonne basate sui caratteri.

Esempio di colonne elenco:

CREATE TABLE expenses (
   expense_date DATE NOT NULL,
   category VARCHAR(30),
   amount DECIMAL (10,3)
);

ALTER TABLE expenses
PARTITION BY LIST COLUMNS (category)
(
   PARTITION p01 VALUES IN ('lodging', 'food'),
   PARTITION p02 VALUES IN ('flights', 'ground transportation'),
   PARTITION p03 VALUES IN ('leisure', 'customer entertainment'),
   PARTITION p04 VALUES IN ('communications'),
   PARTITION p05 VALUES IN ('fees')
);

Esempio di colonne dell'intervallo:

CREATE TABLE range_test (
   code CHAR(3),
   value INT
)
PARTITION BY RANGE COLUMNS(code) (
   PARTITION p0 VALUES LESS THAN ('MMM'),
   PARTITION p1 VALUES LESS THAN ('ZZZ')
);

Ulteriori letture: