java程序性能优化篇

一.服务接口业务SQL开发原则

1.**能少 JOIN 就少 JOIN** | 只在实际用到该表字段做筛选或展示时才 JOIN,否则不 JOIN

  1. **先过滤再关联** | 尽量在单表上先完成过滤、排序、分页,再对外做关联,避免"全表 JOIN 后再 LIMIT"

3.**权限/存在性用 EXISTS** | 判断"是否有权限""是否在某个集合"时,优先用 EXISTS + 索引,少用 `IN (子查询)`

4.**COUNT 与 LIST 同源** | 分页的 count 和 list 的过滤条件、JOIN 策略要一致,且 count 尽量更轻(少 JOIN、少排序)

count 只关心"符合条件的行数",不关心其它表的展示字段。若 count 和 list 用同一套 SQL(含多表 JOIN),会多做一次大结果集的 JOIN 和排序,非常浪费。

5.范围过滤:用 EXISTS 替代 IN (子查询)

不推荐:IN (子查询) 易产生大结果集

and dataset.id in (select dataset_id from test where ex_account = #{params.exAccount})

-- 推荐:EXISTS,便于走索引

and exists (

select 1 from test p

where p.dataset_id = dataset.id and p.ex_account = #{params.exAccount}

)

```

相关推荐
CSharp精选营9 小时前
.NET 8 性能优化实战:让你的应用起飞
性能优化·c#·.net·技术干货
SuperEugene11 小时前
Vue3 性能优化规范:日常必做优化(不玄学、可落地)|可维护性与兜底规范篇
开发语言·前端·javascript·vue.js·性能优化·前端框架
API快乐传递者11 小时前
从零构建高可用API接口:架构设计、性能优化与安全实践
安全·性能优化
山峰哥11 小时前
告别“点点点”:AI 如何重构我们的测试体系与质量防线
服务器·汇编·数据库·人工智能·性能优化·重构
weixin1997010801613 小时前
《XMZ 商品详情页前端性能优化实战》
前端·性能优化
ZPC821014 小时前
手柄替代键盘
人工智能·算法·性能优化·机器人
无人机90114 小时前
Delphi网络编程收尾:故障排查与性能优化实战指南
网络·性能优化
南风知我意95715 小时前
JavaScript 惰性函数深度解析:从原理到实践的极致性能优化
开发语言·javascript·性能优化
不愿透露姓名的大鹏16 小时前
Linux生产环境性能优化:内存优先策略,彻底规避Swap性能损耗
linux·运维·服务器·性能优化
ZPC821016 小时前
ROS 2 手眼标定完整方案
人工智能·算法·性能优化·机器人