MySQL多表多字段计算排序
PHPz
PHPz 2017-04-17 11:40:15
[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语句的执行效率可能会变得很低,请教是否有大神碰到过类似问题,对有这种问题应该才去什么样的解决方案比较合适?

PHPz
PHPz

学习是最好的投资!

全部回复(2)
黄舟

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

黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号