Django admin 分页显示存在性能问题
来源:2-4 如何在windows上安装linux-下
979811597
2023-06-12
在Django 后台中,使用 list_per_page = 10,分页可以生效,在本地速度也很快。
但当数据总量到了1000+条,list_per_page=10,的速度就很慢,尤其是在翻页的时候,在本地速度还可以,但是在服务器上,就很慢了。开始以为是数据库问题,后来发现,最立竿见影的方法,就是临时升宽带,从5M升到10M,速度就快了很多。但这不是长久之计。
老师,请问这种问题应该怎么处理?
写回答
1回答
-
MySQL的OFFSET和LIMIT分页性能问题主要是由于OFFSET的操作需要扫描整个结果集,而LIMIT只需要返回指定数量的行。因此,OFFSET的值越大,扫描的行数就越多,性能也就越差。
以下是一些优化MySQL OFFSET和LIMIT分页性能的方法:
使用主键或唯一索引进行排序,这样MySQL可以直接使用索引进行查询,而不需要扫描整个结果集。
使用子查询,将OFFSET和LIMIT应用于子查询而不是主查询。
使用缓存,将查询结果缓存到缓存服务器中,这样可以减少数据库的查询次数。
使用游标,可以避免一次性返回大量数据,而是逐个返回数据。
对于大数据量的分页查询,可以考虑使用分区表技术,将数据分散到多个表中,这样可以减少单个表的数据量,提高查询性能。
这些都需要理解好索引原理,可以看一下我的 https://www.bilibili.com/video/BV15V411p7pi/
总之,优化MySQL OFFSET和LIMIT分页性能需要综合考虑多个因素,包括数据量、查询条件、索引、缓存等,选择合适的优化方法才能达到最佳性能。
012023-06-14
相似问题