分片键没进查询条件时,中间件只能把 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






暂无评论内容