mysql - 我如何构建我的数据库以在 MySQL 中有效地按依赖于时间的函数进行排序?

标签 mysql algorithm database-design ranking

我有一个像这样的 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/

相关文章:

MySQL连接表与2个引用表

algorithm - 重新排列图表以使某些节点不相邻?

ruby - 如何根据 Ruby 中的单词列表有效地检查文本?

database-design - 电子商务网站是否应该使用混淆的订单 ID

数据库设计 : Is it practical to modify table schema in runtime?

postgresql - 使用 PostGIS 将帖子分配到某个位置的好方法

mysql while 循环;选择并插入

php - 我应该迁移到mysql吗?

mysql - 如果其他行具有相同属性且日期 > 1 天,则 sql 插入

algorithm - 图论深度优先搜索