亿级订单表 要对物流追踪号支持 LIKE %123% 这样的前后缀都模糊查询,现在的 MySQL 查一次要几分钟,必须上 ES 或者 ClickHouse 吗?另外归档数据也要查,有没有办法压缩存储数据

查看 754|回复 70
AkaGhost   
如果你换 PostgreSQL 的话,你可以用 TimescaleDB 自动压缩较旧数据
ferock   
是客户的需求还是领导的需求?
lmshl   
如果是物流追踪号这种定长且总长度不长的短字符串, 直接把每个截断前缀都做一遍索引还更简单, 也能支持精确匹配.
tracking_number[0:16]
tracking_number[1:16]
tracking_number[2:16]
tracking_number[3:16]
...
tracking_number[13:16]
都做成表达式索引, 查询的时候只需要 LIKE ‘123%’, 一样可以做的很快
rrfeng   
es 对这个问题毫无帮助。
kk2syc   
把数据库挂公网上,过一阵子就有秒查的可以用了 /doge/doge
levelworm   
能不能用时间来切啊?总不至于全表查询?用户最多也就一个礼拜之外吧。。。
laminux29   
@lmshl
如果你看不懂 10 楼发的英文,可以试试翻译软件。
xuanbg   
@drymonfidelia OP 你这个就是伪需求。首先,这个查物流单号是随便查的还是只能查自己的?如果是随便查的,那就必须要精确,不然,你查到别人的物流信息算怎么回事?如果是只能查自己的,那条件就不是只有 like 了,先根据用户 id 查,在几十最多几百个结果中 like ,根本不影响什么。
mayli   
@drymonfidelia 前缀后缀 ngram
spiffing   
应该想办法优化一下需求。
我们也有订单匹配物流的查询,前提是订单信息查出来才继续给显示物流的部分。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部