PARTITION 按照月份分区

ゝ一纸荒年。 2022-08-30 05:15 283阅读 0赞

废话不多说,先上分区SQL

  1. CREATE TABLE `demo`(
  2. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
  3. `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '时间',
  4. `age` bigint(20) NOT NULL COMMENT '年龄',
  5. PRIMARY KEY (`id`,`time`) USING BTREE
  6. ) ENGINE = InnoDB AUTO_INCREMENT = 1 COMMENT = 'user表' ROW_FORMAT = Compact
  7. PARTITION BY RANGE (to_days(`time`)) (
  8. PARTITION p202101 VALUES LESS THAN (to_days('2021-02-01')),
  9. PARTITION p202102 VALUES LESS THAN (to_days('2021-03-01')),
  10. PARTITION p202103 VALUES LESS THAN (to_days('2021-04-01')),
  11. PARTITION p202104 VALUES LESS THAN (to_days('2021-05-01')),
  12. PARTITION p202105 VALUES LESS THAN (to_days('2021-06-01'))
  13. );

查坎分区是否被应用

  1. EXPLAIN PARTITIONS SELECT * FROM `user`

踩坑点

1、分区字段类型错误,timestamp 和 varchar 替换为datetime

  1. Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed

2、主键字段错误,分区字段必须添加到主键字段中

  1. A PRIMARY KEY must include all columns in the table's partitioning function

3、函数不支持,使用支出函数即可

  1. This partition function is not allowed
  2. mysql 5.6 支持
  3. 官网地址:https://dev.mysql.com/doc/refman/5.6/en/partitioning-limitations-functions.html
  4. ABS()
  5. CEILING() (see CEILING() and FLOOR())
  6. DATEDIFF()
  7. DAY()
  8. DAYOFMONTH()
  9. DAYOFWEEK()
  10. DAYOFYEAR()
  11. EXTRACT() (see EXTRACT() function with WEEK specifier)
  12. FLOOR() (see CEILING() and FLOOR())
  13. HOUR()
  14. MICROSECOND()
  15. MINUTE()
  16. MOD()
  17. MONTH()
  18. QUARTER()
  19. SECOND()
  20. TIME_TO_SEC()
  21. TO_DAYS()
  22. TO_SECONDS()
  23. UNIX_TIMESTAMP() (with TIMESTAMP columns)
  24. WEEKDAY()
  25. YEAR()
  26. YEARWEEK()

发表评论

表情:
评论列表 (有 0 条评论,283人围观)

还没有评论,来说两句吧...

相关阅读

    相关 hive分区partition介绍

    一、简要概述 1. Hive分区更方便于数据管理,常见的有时间分区和业务分区。 二、hive分区原理 通过实例来理解Hive分区的原理: (一)多分区操作: 1.

    相关 Hive partition 分区

    分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通

    相关 MySQL数据库:分区Partition

    一、分区: 分区就是将表的数据按照特定规则存放在不同的区域,也就是将表的数据文件分割成多个小块,在查询数据的时候,只要知道数据数据存储在哪些区域,然后直接在对应的区域进行