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

How can I structure my database to order by a function dependent on time efficiently in MySQL?

我有一个 table,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 和主菜数量的增加,这无法扩展。 有没有一种方法可以构建我的 table 以使用随着时间的推移分数递减的 KPI 进行有效排名?

我会添加一个 pageranking 列并使用批处理作业定期(每天?)更新它。

这将以使用稍微过时的网页排名为代价提供良好的搜索性能。