mysql日期字段分區索引

創建測試表:

CREATE TABLE `test_report` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`t_date` int(8) NOT NULL COMMENT '統計日期yyyymmdd',
`cust_no` varchar(100) DEFAULT NULL COMMENT '客戶號',
`amount` decimal(26,6) DEFAULT NULL COMMENT '金額',
PRIMARY KEY (`id`,`t_date`),
KEY `idx_test_report_custno` (`cust_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='測試報表'

 

表要滿足兩個要求
1、分區字段必須位於聯合主鍵中,例如,分區字段是t_date,聯合主鍵就是id和t_date。
2、分區字段必須是整型。

 

添加分區索引:

ALTER TABLE test_report PARTITION BY RANGE (t_date)(
    PARTITION p20200101 VALUES LESS THAN (20200101),
    PARTITION p20200201 VALUES LESS THAN (20200201),
    PARTITION p20200301 VALUES LESS THAN (20200301),
    PARTITION p20200401 VALUES LESS THAN (20200401),
    PARTITION p20200501 VALUES LESS THAN (20200501),
    PARTITION p20200601 VALUES LESS THAN (20200601),
    PARTITION p20200701 VALUES LESS THAN (20200701),
    PARTITION p20200801 VALUES LESS THAN (20200801),
    PARTITION p20200901 VALUES LESS THAN (20200901),
    PARTITION p20201001 VALUES LESS THAN (20201001),
    PARTITION p20201101 VALUES LESS THAN (20201101),
    PARTITION p20201201 VALUES LESS THAN (20201201),
    
    PARTITION p20210101 VALUES LESS THAN (20210101),
    PARTITION p20210201 VALUES LESS THAN (20210201),
    PARTITION p20210301 VALUES LESS THAN (20210301),
    PARTITION p20210401 VALUES LESS THAN (20210401),
    PARTITION p20210501 VALUES LESS THAN (20210501),
    PARTITION p20210601 VALUES LESS THAN (20210601),
    PARTITION p20210701 VALUES LESS THAN (20210701),
    PARTITION p20210801 VALUES LESS THAN (20210801),
    PARTITION p20210901 VALUES LESS THAN (20210901),
    PARTITION p20211001 VALUES LESS THAN (20211001),
    PARTITION p20211101 VALUES LESS THAN (20211101),
    PARTITION p20211201 VALUES LESS THAN (20211201),
    
    
    PARTITION p20220101 VALUES LESS THAN (20220101),
    PARTITION p20220201 VALUES LESS THAN (20220201),
    PARTITION p20220301 VALUES LESS THAN (20220301),
    PARTITION p20220401 VALUES LESS THAN (20220401),
    PARTITION p20220501 VALUES LESS THAN (20220501),
    PARTITION p20220601 VALUES LESS THAN (20220601),
    PARTITION p20220701 VALUES LESS THAN (20220701),
    PARTITION p20220801 VALUES LESS THAN (20220801),
    PARTITION p20220901 VALUES LESS THAN (20220901),
    PARTITION p20221001 VALUES LESS THAN (20221001),
    PARTITION p20221101 VALUES LESS THAN (20221101),
    PARTITION p20221201 VALUES LESS THAN (20221201),
    
    PARTITION pmax VALUES LESS THAN MAXVALUE
)

 


如果想刪除指定的分區,可以執行如下SQL:

ALTER TABLE test_report DROP PARTITION p20221201 ;

 

確認分區索引是否添加好了:

SELECT
  partition_name,
  partition_expression,
  partition_description,
  table_rows
FROM information_schema.partitions
WHERE table_schema='test'
  AND table_name='test_report'

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章