问题描述
让我们说我有一个很大的分区表 TableA
,自2016年以来已有数据。
CREATE TABLE `TABLE_A` (
`CallId` bigint(17) NOT NULL,`segstart_2` datetime DEFAULT NULL,PRIMARY KEY (`segstart_2`,`CallId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
50100 PARTITION BY RANGE (TO_DAYS(`segstart_2`))
(PARTITION pmin VALUES LESS THAN (737806) ENGINE = InnoDB,PARTITION p201601 VALUES LESS THAN (737821) ENGINE = InnoDB,.
.
.
.
PARTITION p202012 VALUES LESS THAN (738140) ENGINE = InnoDB);
另一方面,我有另一个 TableB
,该DDL具有自2019年以来的数据,因此B是较小的表。
CREATE TABLE `TABLE_B` (
`CallId` bigint(17) NOT NULL,`CallId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
50100 PARTITION BY RANGE (TO_DAYS(`segstart_2`))
(PARTITION pmin VALUES LESS THAN (737806) ENGINE = InnoDB,PARTITION p202001 VALUES LESS THAN (737821) ENGINE = InnoDB,.
PARTITION p202012 VALUES LESS THAN (738140) ENGINE = InnoDB);
现在,如果我运行以下查询:
select * from Table_A where segstart > '2020-05-01' AND segstart < '2020-05-31';
select * from Table_B where segstart > '2020-05-01' AND segstart < '2020-05-31';
我仅查询2020年5月的两个表。 TableB
查询会更快,因为它的数据量较小,或者两者的速度都相同,因为2020年5月,数据将被均等地划分。谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)