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}

)

```

相关推荐
无心水3 小时前
【Hermes:进阶调优与性能优化】41、模型选择策略:OpenRouter 多模型切换与成本优化
人工智能·性能优化·mcp协议·openclaw·养龙虾·hermes·honcho
小短腿的代码世界4 小时前
Qt_Qwt深度解析:从源码到工业级性能优化
开发语言·qt·性能优化
小短腿的代码世界7 小时前
Qt SVG渲染管线全解析:从XML解析到像素绘制的完整架构设计与性能优化实战
xml·qt·性能优化
前进的李工19 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain
van久1 天前
Day32:项目性能优化(EF Core + 分页 + 全异步)
数据库·oracle·性能优化
三无推导1 天前
OpenHuman 开源项目详解:个人 AI 助手架构与核心技术拆解
人工智能·性能优化·架构·开源·ai助手
这个DBA有点耶1 天前
MySQL深分页优化:从LIMIT 1000000,10到毫秒级响应的三种写法
数据库·程序人生·mysql·性能优化·学习方法·dba·改行学it
贫民窟的勇敢爷们1 天前
Vue项目性能优化的全流程指南
前端·vue.js·性能优化
MU在掘金916951 天前
Android SDK:TraceHook和BlockMonitor的设计
性能优化
RoboWizard1 天前
DIY移动硬盘?2230能否堪大任!
数据库·人工智能·智能手机·性能优化·负载均衡