关于Mysql索引与java数据结构的类比

615 查看

有一个用户抽奖表 因为有如下的查询需求

查询用户今日抽奖次数
查询用户是否中了实物奖品

故创建了如下的索引

    KEY `mobile` (`mobile` , `draw_date`), #用户和抽奖日期
    KEY `mobile_2` (`mobile` , `award_type`) #用户和奖品类型

对Mysql索引突然感到有点困惑, 是不是相当于Mysql内部维护了如下的两个Map

Map<String, Map<Date, List<UserDraw>>> mobileDrawDateMap ;
Map<String, Map<String, List<UserDraw>>> mobileAwardTypeMap

查询的时候相当于执行下面的代码

//得到某用户今日抽奖次数
int drawCount = mobileDrawDateMap.get(mobile).get(drawDate).size();

//判断用户是否中了大奖 大奖奖品类型为20
boolean isWinBigAward = !mobileAwardTypeMap.get(mobile).get("20").isEmpty();

是否可以这样类比Mysql的索引?