MySQL table partition by month

后端 未结 4 1245
南旧
南旧 2020-12-28 08:53

I have a huge table that stores many tracked events, such as a user click.

The table is already in the 10\'s of millions, and its growing larger everyday. The querie

4条回答
  •  被撕碎了的回忆
    2020-12-28 09:34

    HASHing by month with 6 partitions means that two months a year will land in the same partition. What good is that?

    Don't bother partitioning, index the table.

    Assuming these are the only two queries you use:

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

    then start the PRIMARY KEY with the_date.

    The first query simply reads the entire table; no change between partitioned and not.

    The second query, assuming you want a single month, not all the months that map into the same partition, would need to be

    SELECT * FROM ti  WHERE the_date >= '2019-03-01'
                        AND the_date  < '2019-03-01' + INTERVAL 1 MONTH;
    

    If you have other queries, let's see them.

    (I have not found any performance justification for ever using PARTITION BY HASH.)

提交回复
热议问题