我的应用程序用于查询,有 m:n mysql 表:
father(id,name)
child(id)
join_f_c(fatherId,childId):middle table between father and child
有查询场景:
(a): select * from father f,child c,join_f_c jfc where f.name=xxx and join_f_c.fatherId=f.id and join_f_c.childId=c.id
(b): select * from father where f.id=xxx
(c): select * from father where f.name=xxx
父表有 100,000 行,子表有 1000,000+ 行,grandChild 表有 1000,000+ 行。
在这个应用程序中,所有查询都需要很高 的查询性能 - 不仅仅是针对特定行的第二次查询,所以我想在应用程序启动时将所有表数据加载到 memcached中,这些是问题:
1.每个(a)查询会询问memcached 3次:通过name获取父亲id,然后通过join_f_c通过fatherId获取childId,最后通过child从child获取child,这将导致大约0.5ms。memcached 是否适合此连接查询?如果我只是把查询结果放到 memcached 中,会浪费很多空间——很多子行会有很多副本,例如:father1-child1,father2-child1。
2.对于(b)和(c)查询,我需要将每个父表行两次放入memcached:一个键是id,另一个键是name,这会浪费很多缓存空间。有没有更好的方法呢?
任何帮助将不胜感激