I cannot find a good keyword to search for this kind of question, so here you go: Suppose i have this table: CREATE TABLE test ( tr_uuid BINARY(16) NOT NULL, Customer VARCHAR(10) NOT NULL, Data BLOB NO NULL, DataTime DATETIME NOT NULL, PRIMARY KEY (tr_uuid, DataTime) ); CREATE INDEX idx_test ON test(Customer); Are there any bad side if I have this way of partitioning: ALTER TABLE test PARTITION BY RANGE ( ( WEEKOFYEAR(DataTime)+YEAR(DataTime) ) ) ( PARTITION p_422018 VALUES LESS THAN (42+2018), PARTITION p_432018 VALUES LESS THAN (43+2018), PARTITION p_future VALUES LESS THAN (MAXVALUE) ); The idea is to partition for each week every year but I dont want to use `SUBPARTITION`. Another thing, if there is requirement to store the data for **2 years** with data growth of **~6mil/week**, and the chance to query the data is quite rare. Using above way will end up with 53x2 partitions after 2 years, according to this [blog][1], 50 partitions will make it inefficient. So are there any better solution for partitioning? The purpose of partition is not only for query performance, but also to delete the old data smoothly. [1]: https://mariadb.com/kb/en/library/partition-maintenance/