时间:2021-05-23
通常应用需要对表中的数据进行翻页,如果数据量很大,往往会带来性能上的问题:
索引:threa_id+deleted+id(gmt_Create)
10 rows in set (1.32 sec)
这两条sql是为查询最后一页的翻页sql查询用的。由于一次翻页往往只需要查询较小的数据,如10条,但需要向后扫描大量的数据,也就是越往后的翻页查询,扫描的数据量会越多,查询的速度也就越来越慢。
由于查询的数据量大小是固定的,如果查询速度不受翻页的页数影响,或者影响最低,那么这样是最佳的效果了(查询最后最几页的速度和开始几页的速度一致)。
在翻页的时候,往往需要对其中的某个字段做排序(这个字段在索引中),升序排序。那么可不可以利用索引的有序性来解决上面遇到的问题喃,答案是肯定的。比如有10000条数据需要做分页,那么前5000条做asc排序,后5000条desc排序,在limit startnum,pagesize参数中作出相应的调整。
但是这无疑给应用程序带来复杂,这条sql是用于论坛回复帖子的sql,往往用户在看帖子的时候,一般都是查看前几页和最后几页,那么在翻页的时候最后几页的翻页查询采用desc的方式来实现翻页,这样就可以较好的提高性能:
可以看到性能提升了50%以上。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一,最常见MYSQL最基本的分页方式:复制代码代码如下:select*fromcontentorderbyiddesclimit0,10在中小数据量的情况下,这
【SQL】SQL分页查询总结开发过程中经常遇到分页的需求,今天在此总结一下吧。简单说来方法有两种,一种在源上控制,一种在端上控制。源上控制把分页逻辑放在SQL层
单张工作表中的数据排名好说,但若在多张工作表之间进行数据排名,在不进行工作表合并的情况下如何实现?下面就为大家介绍一种方法,很简单,适合新手来学习,来看看吧
在MySQL中,我们可以通过几种不同的方法来执行数据库的备份。今天我们就给大家简单的介绍三种方法来对MySQL数据库进行备份。 第一种方法是在复制数据文件
MySQL的分页似乎一直是个问题,有什么优化方法吗?网上看到网上推荐了一些分页方法,但似乎不太可行,你能点评一下吗?方法1:直接使用数据库提供的SQL语句---