开发者社区> 问答> 正文

在MYSQL中一对多表关系,如何优化操作?

想表达的意思:用户有很多属性(Tag),比如唱歌、跳舞、玩游戏,表结构如下图:
screenshot
创建表的mysql语句如下:
screenshot
插入数据的SQL语句如下:
screenshot
我想在页面表现如下:
screenshot
首先是用户列表,但同时把用户的tag都带出来。
最终的表现形式和segmentfault的首页列表很像,显示问题列表并顺便把问题的很多tag也显示出来。

目前我有两种办法:
1.先把用户select出来,然后在php中循环用户的结果集,再select出属性。
2.通过join连表,查出如下的记录,然后再显示的时候过滤。

请教有没有其他的方案?

谢谢。

展开
收起
落地花开啦 2016-06-12 12:02:25 3872 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    如果数据量不大,那么使用left join 即可,很多企业级的产品基本采用这种方式。
    如果数据量比较大,那么需要采用冷热数据,热数据把uid uname tag_name这放到缓存中,冷数据采用多个简单查询方式。

    2019-07-17 19:33:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像