Mysql 如何优化MIN+;订单+;限度
我尝试在我的应用程序中实现反向分页。数据来自一个大型NoSQL数据库,如果我以一种简单的方式进行分页,那么我会发现我跳转到的页面越远,到达那里所需的时间就越长。为了提高性能,我计划使用只存储索引的MySQL表。我希望从MySQL中找到一个尽可能快的页面起始索引。对于一个有300万行的表,这种方法几乎需要3秒钟来获取和索引: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 如您所见,我尝试查找索
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上也有索引(很可能是主键)?是的,有一个索引您要求我们优化您实现的(相当复杂的)解决方案,以优化应用程序的性能。也许最好找到一种不同的方法来优化应用程序。