分片键选错导致查询要在所有分片上跑一遍

分片键没进查询条件时,中间件只能把 SQL 广播到每个分片再合并。

分片数越多广播越慢,几十个分片的模糊查询很容易把连接池打光。

选键优先看最高频的查询维度,订单表用 user_id 比 order_id 更合适。

实在绕不开的跨片查询,就冗余一张按另一维度分片的表来兜。

-- 带分片键的查询只落一个分片
SELECT * FROM t_order WHERE user_id = 10086 AND status = 1;
-- 不带分片键会广播到全部分片
SELECT * FROM t_order WHERE order_no = 'A20261002';
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容