我有一个像这样的 ID 和 KPI 表
+----+---------------------+------------+--------+
| id | created_at | page_views | shares |
+----+---------------------+------------+--------+
| 1 | 2015-02-25 07:24:50 | 10 | 3 |
| 2 | 2015-04-22 13:48:46 | 40 | 1 |
| 3 | 2014-09-17 15:26:51 | 28 | 5 |
| 4 | 2014-08-09 16:27:48 | 149 | 2 |
| 5 | 2015-01-21 15:56:30 | 3 | 1 |
+----+---------------------+------------+--------+
我想做一个排名算法
SELECT id FROM pages ORDER BY (pages.page_views + pages.shares * 40) / (NOW() - created_at);
但我觉得这无法随着 KPI 和主菜数量的增加而扩展。 有没有一种方法可以构建我的表格,以便使用随着时间的推移分数递减的 KPI 进行有效排名?
最佳答案
我会添加一个 pageranking
列并使用批处理作业定期(每天?)更新它。
这将以使用稍微过时的网页排名为代价提供良好的搜索性能。
关于mysql - 我如何构建我的数据库以在 MySQL 中有效地按依赖于时间的函数进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31561453/