create table if not exists tb_test(
`id` bigint unsigned auto_increment comment '主键 ID',
`A1` VARCHAR(32) DEFAULT '',
`B2` INT UNSIGNED DEFAULT 0,
PRIMARY KEY(`id`),
UNIQUE KEY(`A1`),
KEY (`B2`)
);
常用的 SQL 主要是写入、查询和统计B2字段的数量,如下:
insert ignore into tb_test(A1, B2) values('xxx', 123);
select * from tb_test where A1 = 'xxx';
select count(*) as cnt fro tb_test where B2 = 123;
现在有个问题,这个表现在破亿了,统计 B2 字段耗时有时比较长,将来肯定越来越长,暂时升级数据库配置把耗时降到可接受范围了,目前想的方案是考虑做分表。但是用A1或者B2字段做分表字段都不是很好。A1做分表的话,要统计B2的时候需要每个表都轮询一次。B2字段做分表字段的话,要保证A1字段的唯一性,需要插入前轮询查每一个表当前插入的值是否已经存在。
请教下各位彦祖、亦菲,有没有好的建议,不只是数据库方案,其他存储也可以接受。