Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql-“;趋势分析;功能a la reddit/hackernews性能问题_Mysql_Sql_Doctrine Orm - Fatal编程技术网

mysql-“;趋势分析;功能a la reddit/hackernews性能问题

mysql-“;趋势分析;功能a la reddit/hackernews性能问题,mysql,sql,doctrine-orm,Mysql,Sql,Doctrine Orm,我有一个帖子列表,我想使用一个类似于hacker news或reddit的函数来排序,它的值是“喜欢-不喜欢”和“最近”。问题是:速度非常慢(即使所有相关字段都已编制索引)。我怎样才能加快速度 查询(伪): 我的第一反应是尝试在查询之外计算UNIX_TIMESTAMP(NOW()),尽管我也不知道POW()的性能如何。我最终使用的解决方案是完全放弃超过几周的帖子。因为trending只对最近的内容感兴趣,所以它不需要从历史档案中提取 $oldestAllowed = time() - 3600*

我有一个帖子列表,我想使用一个类似于hacker news或reddit的函数来排序,它的值是“喜欢-不喜欢”和“最近”。问题是:速度非常慢(即使所有相关字段都已编制索引)。我怎样才能加快速度

查询(伪):


我的第一反应是尝试在查询之外计算UNIX_TIMESTAMP(NOW()),尽管我也不知道POW()的性能如何。

我最终使用的解决方案是完全放弃超过几周的帖子。因为trending只对最近的内容感兴趣,所以它不需要从历史档案中提取

$oldestAllowed = time() - 3600*24*14; // 14 days
SELECT * FROM Post WHERE p.time > $oldestAllowed ORDER BY
((p.like_count - p.dislike_count) / POW(((UNIX_TIMESTAMP(NOW()) - p.time / 3600) + 2, 1.5))

我最终使用的解决方案是完全丢弃超过几周的帖子。因为trending只对最近的内容感兴趣,所以它不需要从历史档案中提取

$oldestAllowed = time() - 3600*24*14; // 14 days
SELECT * FROM Post WHERE p.time > $oldestAllowed ORDER BY
((p.like_count - p.dislike_count) / POW(((UNIX_TIMESTAMP(NOW()) - p.time / 3600) + 2, 1.5))

您能否发布查询的
解释
输出?即运行
EXPLAIN SELECT*FROM。。。。。etc
你可以用
SQRT(x*x*x)
替换
POW(x,1.5)
,但我怀疑这有什么区别。你能为你的查询发布
EXPLAIN
输出吗?即运行
EXPLAIN SELECT*FROM。。。。。etc
您可以用
SQRT(x*x*x)
替换
POW(x,1.5)
,但我怀疑这会有什么不同。