Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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反向搜索_Mysql_Search_Query Optimization_Reverse - Fatal编程技术网

MySQL反向搜索

MySQL反向搜索,mysql,search,query-optimization,reverse,Mysql,Search,Query Optimization,Reverse,我有一个查询,我添加了orderbydesclimit,以反转顺序并将结果限制为30。它的工作很好,但我想知道是否有任何其他更快的方式来做这项工作 $q = "SELECT r.*, us.username, a.title, a.id FROM #__rate r LEFT JOIN #__users us ON r.voter_id=us.id LEFT JOIN #__tek_reviews a ON r.reviews_id=a.id WHERE r.user_rated_id="

我有一个查询,我添加了orderbydesclimit,以反转顺序并将结果限制为30。它的工作很好,但我想知道是否有任何其他更快的方式来做这项工作

$q = "SELECT r.*,
us.username,
a.title, a.id
FROM #__rate r  
LEFT JOIN #__users us ON r.voter_id=us.id
LEFT JOIN #__tek_reviews a ON r.reviews_id=a.id
WHERE r.user_rated_id=" . $db->quote($userid) . 'ORDER BY r.id DESC LIMIT 30';
我认为这种方法首先完成搜索,然后对结果进行排序和限制。有没有办法开始反向搜索并限制结果

我展示了某人在某处使用REVERSE()函数来实现相同的功能,但是,我无法让它工作。有什么建议吗

提前谢谢

MySQL REVERSE(str)-返回字符串str,字符顺序颠倒。此功能不影响选择结果顺序,因此无法帮助您。
我认为您的查询足够快,因为它使用主键来获得结果

INDEX(user_rated_id, id)
##上,费率
应能提高效率。我的[index cookbook]介绍了如何构建此索引,并使其在
限制中始终有用

DESC
不会影响问题。扫描可以从单个指定的
用户id
行的末尾开始,然后向后扫描30行

要确定它是否仅涉及30行(相对于整个表):


极不可能有帮助;它是一个字符串函数,用于将类似“this”的内容转换为“siht”。唯一明显有助于此查询的是确保联接条件中使用的字段和order by子句都已编制索引。
联接
速度很快。尝试查看查询中是否完全不需要某些表。除此之外,不要打印不需要的内容。这个查询应该可以在几秒钟内轻松处理大约100万条匹配的条目。谢谢大家!我已经阅读了关于反转功能的手册,这正是你所说的,但我已经阅读了一篇博客文章,其中包括了几个例子,也使用它来反转顺序,我认为我遗漏了一些东西。无论如何,再次谢谢你。顺便说一下,上面的查询实际上不是我的查询…-)我会对这篇博文感到好奇;我想不出有哪种情况可以用反向来达到这样的目的。(“231”和“342”甚至不会改变顺序。)
FLUSH STATUS;
SELECT ...;
SHOW SESSION STATUS LIKE 'Handler%';