MySQL多表多字段计算排序

场景:
现有table_app,table_comment两个表,table_app存放app应用数据,table_comment存放用户的评论,table_comment.appid用于关联table_app

需求:
要求对table_app进行分页排序,排序依据是table_comment.rank与table_app.download_times进行计算得到的值

问题:
原则上可以通过复杂的SQL语句达到目的,但在数据量达到一定量级的时候,SQL语句的执行效率可能会变得很低,请教是否有大神碰到过类似问题,对有这种问题应该才去什么样的解决方案比较合适?

阅读 6.1k
2 个回答

合适的解决方式应该和具体业务关系比较大,例如实时性的要求、那两个字段计算的复杂度。
可以在table_app加个冗余字段,可以加于table_app.download_times进行计算的那个值;也可以加那两个字段计算后的值,看情况吧。
如果评论产生速度很大,可以考虑每隔一段时间(具体看实时性要求)对冗余字段进行更新。如果评论产生速度不大,可以像楼上说的,每次更新那冗余字段。

这就涉及到用空间换取时间了。你在Comment这张表中添加一个字段,保存table_comment.rank与table_app.download_times进行计算得到的值。每次评论产生的时候,更新这个值就可以了。以后排序的时候就不用计算了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏