MySQL MariaDB分区为Laravel软删除(delete_at IS NULL vs datetime值)

问题描述 投票:1回答:1

一个Laravel Eloquent value1 (有时叫 可软化)表是这样的。

id | value1 | value2 | ... | valueN | deleted_at

deleted_at 将是 null 激活条目和删除条目的日期时间值。

将InnoDB表划分为活动记录与删除记录是否可以实现?

(意思是对所有的空值进行分区,对任何实际值进行另一个分区)

更新:经过一番研究,这是我得出的分区。

ALTER TABLE `listings`
PARTITION BY RANGE( UNIX_TIMESTAMP(deleted_at) )
SUBPARTITION BY HASH( user_id )
SUBPARTITIONS 40
(
    PARTITION active VALUES LESS THAN (0), -- null values (not deleted rows) will go here
    PARTITION deleted VALUES LESS THAN MAXVALUE -- non-null values (deleted rows) will go here
);

更新2: 用户永远不会被软删除。 列表将。 他们最终会积累更多的被删除的列表比活跃的列表.用户可以在任何列中定义和组合任何数量的过滤器上(以excel方式)。user_iddeleted_at < 0 (它将修剪分区,而 IS NULL 不会,根据 EXPLAIN PARTITIONS)将始终存在于查询中.我想,分区总是会减少要检查的行数,有时查询会从使用剩余的索引之一中受益。 我不确定我的想法是否正确.

mysql mariadb partitioning
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.