Mysql

MySQL:如何根據月份進行分區

  • February 4, 2016

我有一個以 id 作為主鍵和日期列的表。

我想對數據進行分區..我覺得月份是最好的選擇,這樣我就有 12 個分區..我如何實現這一點!

我在 AWS RDS 上使用 mysql 5.6。

alter table report.track_pdp_visit partition by hash(start_date);

它給了我以下錯誤:

欄位“start_date”是此類分區不允許的類型

這裡開始,下面是一個YEAR適當更改範圍分區的範例。

是手冊中解釋如何更改表和添加分區的部分。你應該可以從這裡拿走它。

CREATE TABLE employees (
   id INT NOT NULL,
   fname VARCHAR(30),
   lname VARCHAR(30),
   hired DATE NOT NULL DEFAULT '1970-01-01',
   separated DATE NOT NULL DEFAULT '9999-12-31',
   job_code INT,
   store_id INT
)
PARTITION BY RANGE ( YEAR(separated) ) (
   PARTITION p0 VALUES LESS THAN (1991),
   PARTITION p1 VALUES LESS THAN (1996),
   PARTITION p2 VALUES LESS THAN (2001),
   PARTITION p3 VALUES LESS THAN MAXVALUE);

有很多限制PARTITIONs。但是,它們沒有提供任何好處的原因有很多。

你希望得到什麼? HASH除非您現在正在執行“表掃描”,否則分區不會提供任何性能優勢。

Vérace 的建議是一種可以解決語法問題的方法,但同樣不太可能帶來性能優勢。

如果您需要刪除舊數據,那麼分區DROP PARTITION是一個很好的理由。RANGE但這是唯一的原因。 請參閱我的部落格以獲取更多討論和執行 and 的DROP程式碼REORGANIZE

引用自:https://dba.stackexchange.com/questions/128146