Tencent / Biny

Biny is a tiny, high-performance PHP framework for web applications

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

自定义排序方面的问题想请教一下

3DMXM opened this issue · comments

事情是这样的,我自定了一套积分算法:
积分 = 浏览/2 + 点赞 + 收藏*2

然后我想让热门内容按照积分从高到低进行排序
“积分”这个没有在数据库存为字段,如果要在数据库加的话要刷10多万条数据,感觉蛮麻烦的;
如果:
浏览是“click”
点赞是“mark”
收藏是“collection”
积分存为“integral”

请问要怎么写才能让内容按照积分从高到低进行排序

可以使用sql模版实现自定义计算后的字段orderby排序的逻辑,但不建议这么做,不命中索引的sql语句执行是非常慢的,建议脚本计算下积分再入库根据积分进行排序

但是积分是随着浏览、点赞、收藏变动而变动的,如果把积分加到字段的话,每当“浏览、点赞、收藏”变动时,都要把积分也更新一下,感觉很麻烦。
另外,sql语句我没怎么用过,如果用原生SQL是怎么写的呢

select (click*2+mark+collection*2) as score from xxxxx where xxxxx order by score desc

@3DMXM
刚想了下 其实按你的逻辑 可以再设个积分字段,浏览时积分+1,点赞时+2,收藏时+4。本来就要更新的只是多更新个字段而已,通过计算排序性能肯定很差的哈

好的,谢谢