Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để phân vùng một bảng MySQL dựa trên cột char?

Phân vùng trong MySQL 5.1 chỉ có thể xử lý các cột số nguyên ( Nguồn ). Bạn chỉ có thể sử dụng một một vài hàm phân vùng trên các cột không phải số nguyên. Ví dụ:

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

Bạn cũng có thể sử dụng phân vùng khóa trong MySQL 5.1, miễn là khóa chính bao gồm tất cả các cột trong chức năng phân vùng của bảng:

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

Mặt khác, trong MySQL 5.5, bạn có thể sử dụng phân vùng cột phạm vi hoặc phân vùng cột danh sách trên nhiều loại dữ liệu, bao gồm cả các cột dựa trên ký tự.

Ví dụ về cột danh sách:

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

Ví dụ về Cột Phạm vi:

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

Đọc thêm:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cần sự trợ giúp của chuyên gia để giải quyết thay đổi nhỏ trong truy vấn dữ liệu không gian

  2. Lọc bí danh trong mysql

  3. Thứ tự LaravelBằng số lượng mối quan hệ

  4. Lỗi Python và mySQLdb:OperationalError:(1054, Cột không xác định trong 'mệnh đề where')

  5. Mệnh đề Where works không hoạt động trên tinyint