如何在mysql中的非分片键列中进行搜索

时间:2019-07-17 17:37:28

标签: mysql sharding

假设我有一个包含三列的表

from_req_id, 
to_req_id, 
date 

(假设有一个朋友请求发送系统),所以我在下面有问题

  1. 如果两个列的查询的负载均相等,我应该选择在哪个列上作为分片键
  2. 假设我选择一列to_req_id作为分片键,现在我希望对于给定的to_req_id我需要20条最新记录。

下面是给定表的表架构,假设说的是friend_requests,该表基于from_req_id列进行分片,并且共有120个这样的表,这些表分布在不同的分片中,例如friend_requests_1,friend_requests_2………..friend_requests_120。并且所有表都具有数百万个此类组合的数据。 现在,我希望“向(to_user_id = 2)发送了好友请求的用户列表(from_request_id),它应该仅是最新的20条记录” 如果是单个表,则查询将如下所示 从friend_requests中选择*,其中to_req_id = 2按日期顺序限制20;

但是由于它是分片环境,那么我如何在没有任何性能问题的情况下获得与上述查询相同的数据,我在from_request_id列上具有分片键,因为两列在读取数据方面具有相等的负载。我认为这应该是有道理的。

从_req_id到_req_id日期 1 2 YYYY-MM-DD 1 4 YYYY-MM-DD 2 3 YYY-MM-DD 6 9 YYY-MM-DD 6 8 YYY-MM-DD 10 33年-月-日 41 2 YYY-MM-DD 43 2 YYY-MM-DD

this image represent the table for reference

0 个答案:

没有答案