Mysql 如何优化MIN+;订单+;限度

Mysql 如何优化MIN+;订单+;限度,mysql,sql,performance,Mysql,Sql,Performance,我尝试在我的应用程序中实现反向分页。数据来自一个大型NoSQL数据库,如果我以一种简单的方式进行分页,那么我会发现我跳转到的页面越远,到达那里所需的时间就越长。为了提高性能,我计划使用只存储索引的MySQL表。我希望从MySQL中找到一个尽可能快的页面起始索引。对于一个有300万行的表,这种方法几乎需要3秒钟来获取和索引: SELECT MIN(id) FROM index_77635_ ORDER BY id DESC LIMIT $large_skip_number 如您所见,我尝试查找索

我尝试在我的应用程序中实现反向分页。数据来自一个大型NoSQL数据库,如果我以一种简单的方式进行分页,那么我会发现我跳转到的页面越远,到达那里所需的时间就越长。为了提高性能,我计划使用只存储索引的MySQL表。我希望从MySQL中找到一个尽可能快的页面起始索引。对于一个有300万行的表,这种方法几乎需要3秒钟来获取和索引:

SELECT MIN(id) FROM index_77635_ ORDER BY id DESC LIMIT $large_skip_number
如您所见,我尝试查找索引最少的行,以便跳转到前面添加的行。也许有更好的方法来执行这项任务

编辑

正确的查询非常有效(=相对较快,或至少比纯Mongo更快),结果是:

SELECT a.id FROM index_77635_ a 
INNER JOIN ( 
    SELECT MAX(id) AS id FROM (
        SELECT id FROM index_77635_ ORDER BY id DESC LIMIT $skip,$limit
    ) t 
) b ON a.id = b.id

在本例中,我尝试查找起始索引(这是向后分页的最大值),然后在mongo中查询到此索引的所有数据。

您的查询只返回一行。
订单依据
限额
是多余的。谢谢!假设您的id上也有索引(很可能是主键)?是的,有一个索引您要求我们优化您实现的(相当复杂的)解决方案,以优化应用程序的性能。也许最好找到一种不同的方法来优化应用程序。