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

Hvordan partitionerer man en MySQL-tabel baseret på char-kolonnen?

Partitionering i MySQL 5.1 kan kun håndtere heltalskolonner (Kilde ). Du kan kun bruge nogle få partitioneringsfunktioner på ikke-heltalskolonner. For eksempel:

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

Du kan også bruge nøglepartitionering i MySQL 5.1, så længe den primære nøgle inkluderer alle kolonnerne i tabellens partitioneringsfunktion:

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

På den anden side kan du i MySQL 5.5 bruge interval kolonnepartitionering eller listekolonnepartitionering på en lang række datatyper, inklusive tegnbaserede kolonner.

Liste kolonner Eksempel:

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

Eksempel på intervalkolonner:

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

Yderligere læsning:



  1. Hvordan henter man et billede fra en SQLite-database?

  2. Hvordan kopierer man data fra en anden tabel uden at låse tabellen i MYSQL 6.2?

  3. VÆLG MySQL-rækker, hvor dagens dato er mellem to DATO-kolonner

  4. PHP MySQL LOAD DATA INFIL Hjælp