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}

)

```

相关推荐
银河麒麟操作系统1 天前
银河麒麟桌面操作系统V10SP1(全X86/ARM架构)【进程资源限制与性能优化实践】技术文章
arm开发·性能优化·架构
用户2018792831671 天前
AI自动化Android性能优化流程畅想
性能优化
无心水1 天前
【OpenClaw:性能优化】18、OpenClaw WebSocket连接池与消息队列——解决长连接抖动与任务堆积
人工智能·websocket·网络协议·性能优化·openclaw·养龙虾
qq_246839751 天前
Redis lua 执行性能优化
redis·性能优化·lua
山峰哥1 天前
数据库工程中的SQL调优策略与实践:从索引优化到执行计划分析
数据库·sql·性能优化
Gauss松鼠会1 天前
openGauss数据库源码解析系列文章--openGauss简介(上)
数据库·性能优化·database·opengauss
iPadiPhone1 天前
性能优化的“双刃剑”:MySQL 查询缓存深度架构解析与面试复盘
java·后端·mysql·缓存·面试·性能优化
visual_zhang1 天前
iOS NotificationCenter Observer 的隐性性能代价
性能优化·代码规范
yxy___2 天前
达梦分布式集群DPC_分区表重建与性能优化操作指南_yxy
分布式·性能优化·分区表
JMchen1232 天前
自定义View性能优化:从60fps到120fps的进阶之路
android·经验分享·性能优化·kotlin·自定义view