gpt4 book ai didi

MySQL表按月分区

转载 作者:行者123 更新时间:2023-12-02 13:09:09 24 4
gpt4 key购买 nike

我有一个巨大的表,用于存储许多跟踪事件,例如用户点击。

这个表已经有数十百万,并且每天都在增长。当我尝试从大时间范围中获取事件时,查询开始变慢,在阅读了有关该主题的大量内容后,我了解到对表进行分区可能会提高性能。

我想要做的是按月对表进行分区。

我只找到了如何每月手动分区的指南,有没有办法告诉 MySQL 按月分区,它会自动执行此操作?

如果没有,考虑到我的按列分区是日期时间,手动执行此操作的命令是什么?

最佳答案

如手册所述:http://dev.mysql.com/doc/refman/5.6/en/partitioning-overview.html

通过对月份输出进行哈希分区可以轻松实现这一点。

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

请注意,这仅按月分区,而不是按年分区,而且此示例中只有 6 个分区(即 6 个月)。

对于现有表进行分区(手册:https://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html):

ALTER TABLE ti
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;

可以从整个表中进行查询:

SELECT * from ti;

或者从特定分区:

SELECT * from ti PARTITION (HASH(MONTH(some_date)));

关于MySQL表按月分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19355024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com