• 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'



    作者:Lave Zhang
    出处:http://www.cnblogs.com/lavezhang/
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    github的使用
    QPalette的用法
    QTimer的用法
    QStatusBar的用法
    QWhatsThis的用法
    QString::​arg的用法
    qt中ui的 使用介绍
    安全协议IPSEC
    安全协议ssl
    对称加密和非对称加密
  • 原文地址:https://www.cnblogs.com/lavezhang/p/15772275.html
Copyright © 2020-2023  润新知