MySQL反向搜索

时间:2017-06-16 19:05:36

标签: mysql search query-optimization reverse

我有以下查询,我已经添加了ORDER BY DESC LIMIT来反转顺序并将结果限制为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()函数来帮助同一人,但我无法使其工作。有什么建议?

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

INDEX(user_rated_id, id)
#__rate上的

应该提高效率。我的[ index cookbook ]涵盖了构建此索引并使其在LIMIT中一直有用的情况。

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

确定它是否只触及30行(相对于整个表格):

FLUSH STATUS;
SELECT ...;
SHOW SESSION STATUS LIKE 'Handler%';