SQL大数据量分页性能优化

通过对WebAPI分页查询的优化,将响应时间从0.287秒降低至0.012秒。采用先查找满足条件的索引再检索数据的方法,显著提升了查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前在进行web api只读接口的改造,在改造过程中,发现改在后响应时间和之前区别不是很大,通过测试结果显示在sql的分页功能处找到原因,并对其进行优化,优化方案如下。

测试内容

此次运行时间对比采用平台资金记录最多的用户 user_id 36062

测试次数未5次  为避免索引缓存每次测试前更改 limit 的起始值,查询条数10不变。

5次结果取平均值优化前平均查询时间为0.287s

         优化后 sql1平均查询时间为0.012s

         优化后 sql2 平均查询时间为0.016s

结果显示:优化后的sql1和sql2查询效率明显高于优化前。

通过先查找到所有满足条件的索引,然后通过索引检索到所需要的数据,效率提高很多。

附:sql

sql

SELECT  * FROM  account_log WHERE user_id  =  36062ORDER BY id DESC LIMIT 3300, 10;

优化后的sql 1

SELECT * FROM account_log a JOIN ( SELECTid FROM rd_account_log WHERE user_id = 36062 ORDER BY id DESC LIMIT 3300, 10) bON b.id = a.id;

优化有sql 2

SELECT * FROM account_log WHERE user_id =36062 AND id <=(SELECT id FROM rd_account_log

WHERE user_id = 36062 ORDER BY id DESC LIMIT33416,1) LIMIT 10

总结

1、随着起始记录的增加,时间也随着增大, 这说明分页语句limit跟起始页码是有很大关系的;

1)limit语句的查询时间与起始记录的位置成正比
2)mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用。

2、利用表的覆盖索引来加速分页查询
我们都知道,利用了索引查询的语句中如果只包含了那个索引列(覆盖索引),那么这种情况会查询很快。

因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。



### Spring Framework与Ollama的集成 #### 使用Spring AI模块实现AI应用开发 为了利用Spring框架构建基于Ollama人工智能应用程序,开发者可以通过引入特定库来简化这一过程。具体来说,在项目中加入`spring-ai-starter`依赖项能够帮助快速搭建起具备机器学习能力的服务端程序[^1]。 对于希望借助Spring生态系统的力量加速AI项目的团队而言,除了上述提到的基础组件外,还可以考虑采用其他辅助工具和服务: - **Spring ML** 提供了一系列用于处理模型训练、评估以及预测任务的功能接口; - **Spring Data** 支持多种数据源接入方式,方便管理结构化和非结构化的海量信息资源; - **Spring Integration** 则有助于创建复杂的消息驱动架构,促进不同服务之间的高效协作; 在实际操作层面,完成环境准备之后,按照官方文档指导依次执行添加所需Maven/Gradle插件声明、调整配置文件参数设定等工作即可让应用程序顺利调用到由Ollama所提供的强大算法引擎支持下的各项特性。 ```xml <!-- Maven --> <dependency> <groupId>com.spring.ai</groupId> <artifactId>spring-ai-starter</artifactId> <version>${latest.version}</version> </dependency> // Gradle implementation 'com.spring.ai:spring-ai-starter:${latest.version}' ``` 通过以上步骤,便可以在现有的Spring工程基础上轻松扩展出智能化的应用场景,享受来自前沿科技带来的无限可能性的同时保持系统的稳定性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值