sql >> Database >  >> RDS >> Mysql

Hoe een MySQL-tabel te partitioneren op basis van de char-kolom?

Partitioneren in MySQL 5.1 kan alleen omgaan met integer-kolommen (Bron ). U kunt slechts een paar partitioneringsfuncties op niet-gehele kolommen. Bijvoorbeeld:

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

U kunt ook sleutelpartitionering gebruiken in MySQL 5.1, zolang de primaire sleutel alle kolommen in de partitiefunctie van de tabel bevat:

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

Aan de andere kant kun je in MySQL 5.5 bereikkolompartitionering of kolompartitionering weergeven op een breed scala aan gegevenstypen, inclusief op tekens gebaseerde kolommen.

Voorbeeld kolommen weergeven:

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')
);

Bereikkolommen Voorbeeld:

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')
);

Verder lezen:



  1. MYSQL-uitvoer in boomstructuur OF Niveau toevoegen (Ouder-kind)

  2. Hoe kan ik (Mijn)SQL-statements controleren op syntactische correctheid?

  3. Epoch-tijdstempel converteren naar sql-server (menselijk leesbaar formaat)

  4. Waarschuwing:mysqli_connect():(HY000/1045):Toegang geweigerd voor gebruiker 'root'@'localhost' (met wachtwoord:NEE)