采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在Django 后台中,使用 list_per_page = 10,分页可以生效,在本地速度也很快。
但当数据总量到了1000+条,list_per_page=10,的速度就很慢,尤其是在翻页的时候,在本地速度还可以,但是在服务器上,就很慢了。开始以为是数据库问题,后来发现,最立竿见影的方法,就是临时升宽带,从5M升到10M,速度就快了很多。但这不是长久之计。
老师,请问这种问题应该怎么处理?
MySQL的OFFSET和LIMIT分页性能问题主要是由于OFFSET的操作需要扫描整个结果集,而LIMIT只需要返回指定数量的行。因此,OFFSET的值越大,扫描的行数就越多,性能也就越差。
以下是一些优化MySQL OFFSET和LIMIT分页性能的方法:
使用主键或唯一索引进行排序,这样MySQL可以直接使用索引进行查询,而不需要扫描整个结果集。
使用子查询,将OFFSET和LIMIT应用于子查询而不是主查询。
使用缓存,将查询结果缓存到缓存服务器中,这样可以减少数据库的查询次数。
使用游标,可以避免一次性返回大量数据,而是逐个返回数据。
对于大数据量的分页查询,可以考虑使用分区表技术,将数据分散到多个表中,这样可以减少单个表的数据量,提高查询性能。
这些都需要理解好索引原理,可以看一下我的 https://www.bilibili.com/video/BV15V411p7pi/
总之,优化MySQL OFFSET和LIMIT分页性能需要综合考虑多个因素,包括数据量、查询条件、索引、缓存等,选择合适的优化方法才能达到最佳性能。
好的,谢谢老师,一定认真学习。在调试的过程中,阴差阳错的把这个问题解决了。把list_filter这一行注释了,效果立竿见影,原因可能是把一些非过滤字段也一股脑放进去了,比如name,material_id都作为了过滤字段。
登录后可查看更多问答,登录/注册
一套通用的技术组合拳,助你解决大部分Python类网站后端问题
1.4k 18
1.7k 15
1.9k 13
2.1k 13
948 12