【MySQL查询效率翻倍秘籍】:从执行计划到SQL重写全解析

第一章:MySQL查询优化的核心理念

MySQL查询优化是提升数据库性能的关键环节,其核心在于以最小的资源消耗完成数据检索。优化的目标不仅是加快查询响应速度,还包括降低CPU、I/O和内存的使用,从而支撑更高并发的应用场景。

理解查询执行路径

MySQL执行查询时会经历解析、优化、执行和返回结果四个阶段。查询优化器负责生成执行计划,选择最高效的访问路径。通过EXPLAIN命令可以查看SQL语句的执行计划,帮助识别全表扫描、索引失效等问题。
-- 查看查询执行计划
EXPLAIN SELECT * FROM users WHERE age > 30;
该语句输出包含id、select_type、table、type、possible_keys、key、rows和extra等字段,其中key表示实际使用的索引,rows表示扫描行数,应尽量减少。

索引的有效利用

合理设计索引是查询优化的基础。以下原则有助于提升索引效率:
  • 为频繁查询的列创建索引,尤其是WHERE、JOIN和ORDER BY子句中出现的字段
  • 避免过度索引,因为索引会增加写操作的开销并占用存储空间
  • 使用复合索引时注意最左前缀原则

避免常见性能陷阱

某些SQL写法会导致优化器无法有效工作。例如函数包裹索引列会使索引失效:
-- 错误示例:索引可能失效
SELECT * FROM users WHERE YEAR(created_at) = 2023;

-- 正确做法:使用范围条件
SELECT * FROM users WHERE created_at >= '2023-01-01' AND created_at < '2024-01-01';
优化策略说明
使用覆盖索引查询所需字段全部包含在索引中,避免回表查询
限制结果集大小使用LIMIT减少传输数据量
避免SELECT *只查询必要字段,减少I/O和网络开销

第二章:深入理解执行计划(EXPLAIN详解)

2.1 执行计划中的关键字段解析:从type到Extra

在MySQL执行计划(EXPLAIN)中,理解各字段含义是优化SQL查询的基础。核心字段包括`type`、`key`、`rows`和`Extra`,它们共同揭示了查询的访问方式与性能瓶颈。
type 字段:连接类型分析
该字段反映表的访问方式,常见值按性能由优到劣排列如下:
  • system/const:主键或唯一索引等值查询,最快
  • ref:非唯一索引匹配
  • range:索引范围扫描
  • index:全索引扫描
  • ALL:全表扫描,应尽量避免
Extra 字段:执行细节提示
EXPLAIN SELECT * FROM users WHERE age = 25;
若输出中`Extra`为“Using where; Using filesort”,说明虽使用了条件过滤,但排序未走索引。理想情况应通过复合索引消除文件排序。
字段名典型值含义说明
keyidx_age实际使用的索引名称
rows1000预估扫描行数,越小越好

2.2 识别低效查询模式:全表扫描与索引失效场景

在数据库性能优化中,全表扫描是常见的性能瓶颈。当查询无法利用索引时,数据库将遍历整张表以匹配条件,显著增加I/O开销。
常见索引失效场景
  • 对索引列使用函数或表达式,如 WHERE YEAR(created_at) = 2023
  • 使用 LIKE 以通配符开头,例如 LIKE '%abc'
  • 隐式类型转换,如字符串字段与数字比较
  • 复合索引未遵循最左前缀原则
示例分析
SELECT * FROM users WHERE SUBSTR(email, 1, 3) = 'abc';
该查询在email字段上使用函数SUBSTR,导致即使存在索引也无法使用,触发全表扫描。应重构为前缀匹配:WHERE email LIKE 'abc%',并建立对应索引。
执行计划验证
通过EXPLAIN命令可识别扫描方式:
idselect_typetypekey
1SIMPLEALLNULL
其中type=ALL表示全表扫描,key=NULL说明未使用索引,需立即优化。

2.3 利用执行计划定位性能瓶颈:实战案例分析

在一次订单查询接口响应缓慢的排查中,通过数据库执行计划(EXPLAIN)发现了全表扫描问题。原SQL如下:
EXPLAIN SELECT * FROM orders 
WHERE user_id = 12345 AND status = 'paid' 
ORDER BY created_at DESC LIMIT 20;
执行计划显示,虽然 status 字段有索引,但优化器仍选择全表扫描。进一步分析发现,user_id 缺少索引,且未建立复合索引。
索引优化建议
  • 为 user_id 单独创建索引
  • 建立 (user_id, status, created_at) 联合索引以支持覆盖索引扫描
优化后执行计划显示使用了索引范围扫描,查询耗时从 1.2s 降至 45ms。该案例表明,执行计划是定位SQL性能瓶颈的核心工具,尤其在高并发场景下,合理的索引设计可显著提升系统吞吐能力。

2.4 覆盖索引与索引下推的执行表现对比

在查询优化中,覆盖索引和索引下推是两种关键的性能提升机制。覆盖索引指查询所需字段全部包含在索引中,无需回表操作。
覆盖索引示例
CREATE INDEX idx_name_age ON users(name, age);
SELECT name, age FROM users WHERE name = 'Alice';
该查询仅访问索引即可完成,避免了回表,显著减少I/O开销。
索引下推(ICP)机制
MySQL 5.6引入ICP,在存储引擎层对索引数据进行条件过滤,减少回表次数。
  • 传统方式:先回表再过滤
  • ICP方式:利用索引字段提前过滤
性能对比
特性覆盖索引索引下推
是否回表否可能仍需回表
适用场景查询字段在索引中复合索引部分匹配

2.5 使用EXPLAIN FORMAT=JSON获取更深层信息

MySQL的`EXPLAIN`语句是分析查询执行计划的基础工具,而通过使用`EXPLAIN FORMAT=JSON`,可以获取比传统文本格式更丰富、结构化的执行信息。这种格式不仅展示访问类型和索引使用情况,还包含成本估算、行过滤率、临时表使用等深度统计。
JSON格式的优势
相比默认格式,JSON输出提供了可解析的嵌套结构,便于程序处理。它揭示了优化器决策背后的细节,例如每个操作的实际开销和数据读取效率。
EXPLAIN FORMAT=JSON
SELECT u.name, o.total 
FROM users u JOIN orders o ON u.id = o.user_id 
WHERE u.city = 'Beijing';
该语句返回一个JSON对象,其中包含“query_block”、“table”、“access_type”、“rows_examined_per_scan”以及“filtered”等关键字段。特别地,“cost_info”提供了如“read_cost”、“eval_cost”的细分成本,帮助识别性能瓶颈。
  • 显示索引选择的具体原因(used_key)
  • 提供行过滤百分比,评估WHERE条件效率
  • 揭示是否使用了缓冲、排序或临时表

第三章:索引设计与查询效率的关系

3.1 最左前缀原则与复合索引的合理构建

在数据库查询优化中,复合索引的设计需遵循最左前缀原则。该原则要求查询条件必须从索引的最左侧列开始,且连续使用索引中的列,才能有效触发索引查找。
最左前缀匹配示例
-- 建立复合索引
CREATE INDEX idx_user ON users (last_name, first_name, age);

-- 以下查询可命中索引
SELECT * FROM users WHERE last_name = 'Zhang';
SELECT * FROM users WHERE last_name = 'Zhang' AND first_name = 'San';
SELECT * FROM users WHERE last_name = 'Zhang' AND first_name = 'San' AND age = 25;
上述查询均以 last_name 开头,符合最左前缀原则。而若仅查询 first_name 或 age,则无法使用该索引。
索引列顺序建议
  • 将选择性高的列放在前面,提升过滤效率
  • 频繁作为查询条件的列优先排左
  • 避免冗余单列索引,合理合并为复合索引

3.2 索引选择性评估与高散列字段优化策略

索引选择性是衡量索引效率的关键指标,定义为唯一值数量与总行数的比值。选择性越高,查询性能越优。对于高散列字段(如UUID),虽具高选择性,但易导致索引碎片化。
选择性计算公式
SELECT 
  COUNT(DISTINCT column_name) / COUNT(*) AS selectivity 
FROM table_name;
该SQL用于评估字段选择性。理想值趋近于1,若低于0.1则建议重新考虑索引设计。
高散列字段优化手段
  • 使用前缀索引减少存储开销
  • 采用哈希索引替代B+树以提升等值查询速度
  • 结合函数索引对UUID进行反转存储(如REVERSE(uuid))以改善插入局部性
图示:传统UUID与时间序列UUID的B+树插入分布对比,后者显著降低页分裂频率。

3.3 避免过度索引:维护成本与写入性能权衡

在数据库设计中,索引虽能加速查询,但过多索引会显著增加写入开销。每次INSERT、UPDATE或DELETE操作都需要同步更新所有相关索引,导致磁盘I/O上升和事务延迟。
索引维护的性能代价
每新增一个索引,写入性能平均下降5%~10%。尤其在高并发写入场景下,B+树的页分裂和日志刷写会成为瓶颈。
合理评估索引必要性
  • 避免对低选择性字段创建单独索引(如性别、状态)
  • 优先使用复合索引覆盖多个查询条件
  • 定期审查未被使用的索引(可通过information_schema.statistics分析)
-- 示例:查看未被使用的索引
SELECT * FROM sys.schema_unused_indexes 
WHERE object_schema = 'your_db';
该查询利用MySQL Sys Schema提供的视图,列出长时间未被查询引用的索引,帮助识别可清理的对象。

第四章:SQL重写提升查询性能的实用技巧

4.1 子查询改写为JOIN:减少嵌套带来的开销

在复杂查询中,嵌套子查询虽然逻辑清晰,但常导致执行计划低效。数据库优化器难以对深层嵌套进行有效优化,从而增加IO和CPU开销。
改写优势
将子查询转换为JOIN操作可提升执行效率,主要原因包括:
  • 更优的执行计划选择空间
  • 减少重复执行子查询的次数
  • 便于利用索引和哈希连接算法
示例对比
原始子查询写法:
SELECT name FROM users 
WHERE id IN (SELECT user_id FROM orders WHERE status = 'completed');
该写法可能导致对orders表的多次扫描。 等价JOIN改写:
SELECT DISTINCT u.name 
FROM users u 
JOIN orders o ON u.id = o.user_id 
WHERE o.status = 'completed';
通过JOIN,数据库可采用哈希或合并连接,显著降低执行成本。

4.2 IN与EXISTS的等价转换及性能差异分析

在SQL查询优化中,IN与EXISTS常用于子查询判断,二者在特定条件下可等价转换。理解其执行机制对性能调优至关重要。
语义对比与等价场景
当子查询不涉及相关字段时,IN与EXISTS逻辑等价。例如:
-- 使用 IN
SELECT * FROM employees e 
WHERE e.dept_id IN (SELECT d.id FROM departments d WHERE d.location = 'Beijing');

-- 等价 EXISTS 写法
SELECT * FROM employees e 
WHERE EXISTS (SELECT 1 FROM departments d WHERE d.id = e.dept_id AND d.location = 'Beijing');
上述查询均返回所属部门位于北京的所有员工。EXISTS利用相关子查询进行逐行匹配,而IN先执行子查询生成结果集。
性能差异分析
  • EXISTS:适合外层表小、内层表大的场景,支持短路判断,一旦匹配即返回true。
  • IN:子查询结果集较小时性能佳,但若包含NULL值可能导致意外结果。
数据库优化器通常能自动选择最优执行路径,但在复杂关联中建议优先使用EXISTS以提升可读性与效率。

4.3 GROUP BY和DISTINCT的互换优化场景

在特定查询场景下,GROUP BY与DISTINCT可实现相同语义,但执行效率存在差异。当仅需去重而无聚合操作时,DISTINCT更直观;但在支持索引扫描的列上,GROUP BY可能利用排序优势提升性能。
语法等价性示例
-- 使用 DISTINCT 去重
SELECT DISTINCT department_id FROM employees;

-- 等价的 GROUP BY 写法
SELECT department_id FROM employees GROUP BY department_id;
上述两个查询逻辑等价,均返回部门ID的唯一值。数据库优化器可能生成相同执行计划。
优化建议
  • 无聚合场景优先使用 DISTINCT,语义清晰;
  • 若后续扩展需添加聚合函数(如 COUNT),直接使用 GROUP BY 更易维护;
  • 在高基数列上,GROUP BY 可能借助排序减少内存占用。

4.4 减少函数干扰:避免在WHERE条件中对字段进行运算

在SQL查询优化中,应尽量避免在WHERE子句中对数据库字段使用函数或表达式运算。这类操作会导致索引失效,迫使数据库执行全表扫描,显著降低查询性能。
问题示例
SELECT * FROM users WHERE YEAR(birth_date) = 1990;
该查询对字段birth_date应用了YEAR()函数,导致无法使用该字段上的索引。
优化方案
将运算移至常量一侧,保持字段“裸露”:
SELECT * FROM users WHERE birth_date >= '1990-01-01' AND birth_date < '1991-01-01';
此写法可充分利用birth_date的B-Tree索引,显著提升查询效率。
  • 字段参与运算会破坏索引有序性
  • 函数索引虽可缓解,但增加维护成本
  • 推荐重写查询以保持字段原生状态

第五章:综合调优策略与未来演进方向

性能瓶颈的系统性识别
在高并发场景下,数据库连接池配置不当常成为性能瓶颈。通过 Prometheus 采集 JVM 和数据库指标,结合 Grafana 可视化分析,可精准定位响应延迟来源。例如某电商系统在大促期间出现请求堆积,监控显示数据库连接等待时间超过 800ms。
基于反馈的动态调优机制
采用自适应算法动态调整线程池大小,能有效应对流量波动。以下为 Go 语言实现的简单示例:

// 动态调整工作协程数量
func adjustWorkers(currentLoad float64) {
    if currentLoad > 0.8 {
        workers = min(workers+10, maxWorkers)
    } else if currentLoad < 0.3 {
        workers = max(workers-5, minWorkers)
    }
    // 重新分配任务通道缓冲区
    taskChan = make(chan Task, workers*10)
}
微服务架构下的优化路径
在服务网格环境中,通过 Istio 启用 mTLS 并配置合理的超时与重试策略,显著降低跨服务调用失败率。以下是典型配置片段:
参数建议值说明
timeout3s避免长时间阻塞
maxRetries2防止雪崩效应
circuitBreakerconsecutiveErrors: 5快速熔断异常实例
面向未来的可观测性增强
引入 OpenTelemetry 统一追踪、指标与日志,支持多语言环境下的端到端链路分析。某金融平台接入后,平均故障定位时间(MTTR)从 45 分钟缩短至 8 分钟,极大提升运维效率。
SQL子查询与CTE:构建可读、可维护、可协作的数据分析逻辑 SQL子查询和CTE是数据分析师从‘查数据’迈向‘建模型’的核心能力。它们并非语法进阶,而是解决多层业务逻辑嵌套的结构化思维工具——子查询显性化计算依赖链,CTE将分析流程拆解为带业务语义的可复用模块。相比硬拼JOIN或滥用临时表,二者显著提升代码可读性、协作效率与调试能力,尤其适用于RFM用户分层、留存漏斗、动态排名等典型分析场景。在MySQL 8.0+及PostgreSQL中,合理运用标量子查询、行子查询、表子查询,并规避CTE命名冲突、递归失控、性能幻觉等陷阱,是保障分析结果准确、稳定、可交付的关键工 阅读详情

相关推荐

MyBatis-Plus分页查询total不准问题深度解析与解决方案

分页查询是后端开发中的基础功能,其核心在于准确获取数据总数(total)以支持前端分页组件。在ORM框架如MyBatis-Plus中,分页插件通过拦截原始SQL,自动生成COUNT语句来统计总数。然而,在涉及多表关联(如LEFT JOIN)、GROUP BY分组或DISTINCT去重等复杂查询场景时,自动生成的COUNT逻辑可能无法准确反映业务语义,导致total值错误,进而影响分页功能的正确性与用户体验。为解决此问题,开发者需深入理解分页插件的工作原理,掌握通过自定义COUNT查询、调整优化器配置等工程实

weixin_34232744的博客 415

UNION vs UNION ALL:SQL性能分水岭与生产决策指南

UNION和UNION ALL是关系型数据库中最基础却最易误用的集合操作,其本质差异远超‘是否去重’的语法表象——前者触发排序、临时表、哈希聚合等高开销物理操作,后者实现零拷贝流式拼接。理解这一区别,需从查询执行计划、内存管理、IO路径及并发影响四个维度切入。在千万级数据场景下,错误选用UNION可能导致响应时间激增20倍、磁盘IO暴涨数GB,并引发连接池雪崩与统计信息污染。真实业务中,90%的UNION可被UNION ALL替代,前提是准确识别数据源互斥性(如分库/分区/状态机场景)。本文聚焦MySQL、

weixin_33892359的博客 314

远程数据库性能优化:连接池、读写分离与查询治理实战

远程数据库并非简单更换连接地址,而是面向高并发场景的数据访问架构升级。其核心在于解决传统单机LNMP中PHP与MySQL紧耦合导致的连接爆炸、TCP握手开销大、慢查询泛滥等根本问题。通过引入ProxySQL等专业中间件实现连接复用、网络拓扑约束下的低延迟通信,以及基于规则的查询生命周期管理(如拦截全表扫描、启用缓存、异步化重载),可将P95响应时间压缩60%以上。该方案特别适用于QPS持续增长、首页首屏超1.5秒、MySQL连接数频繁打满的中小业务系统,是MySQL、remote database与site

weixin_30613727的博客 440

【SQL性能翻倍指南】:从慢查询到毫秒响应的进阶之路

掌握1024 SQL数据分析实战技巧,告别慢查询困扰。详解索引优化、执行计划分析与复杂查询重构,适用于大数据量场景下的性能调优。提升SQL运行效率,实现毫秒级响应,关键技巧一文掌握,值得收藏。

InstrWander的博客 763

南京邮电大学电工电子实验(二)复习一

本文给电工电子实验(二)的复习进行一些知识点的提醒

YOUXISUN的博客 2959

【详细图文】使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集

使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集,以及MobaXterm使用介绍和linux基础命令介绍。

qq_62844901的博客 3385

用DeepSeek大模型优化MySQL索引:让DBA工作效率翻倍

在代码审查阶段,用DeepSeek检查SQL是否命中索引,避免上线后性能问题。:DeepSeek大模型自动分析SQL,推荐最优索引方案,效率提升10倍!:DBA手动分析SQL、看执行计划、调整索引,费时费力。SQL执行计划看不懂?:某电商平台订单查询变慢,DBA发现一条SQL执行要。,上传你的SQL和表结构,获取AI优化建议!表有10个索引,但核心查询仍然慢。✅ QPS(每秒查询量)提升。✅ 数据库CPU使用率下降。

专注于编程、AI、人工智能等多个领域内容研究和分析 1121

告别两个电源模块!用UCD3138+四开关Buck-Boost,一个电路搞定电池充放电(附原理图分析)

本文详细介绍了采用UCD3138数字控制器和四开关Buck-Boost拓扑的双向DC/DC变换器设计,实现单一电路完成电池智能充放电管理。该方案显著降低BOM成本和PCB面积,提升系统效率至96.2%,适用于UPS、通信基站和储能系统,具有高效、紧凑和成本优势。

weixin_30256901的博客 397

SQLGlot:AI如何帮你自动优化SQL查询

它最让我惊喜的是支持多种SQL方言的互转,比如MySQL转PostgreSQL,这在跨数据库迁移时特别有用。最方便的是部署功能,一键就把我的SQL优化工具发布成了在线服务,团队成员随时都能访问使用。性能优化建议是最大亮点。SQLGlot结合AI分析,能识别出查询中的潜在性能问题,比如缺少索引、全表扫描等,并给出具体的优化方案。我们项目有时需要从MySQL迁移到PostgreSQL,用SQLGlot一键转换,省去了手动重写所有查询的麻烦。用户输入SQL后,后端用SQLGlot处理,前端展示优化前后的对比。

SunstoneLion34的博客 1271

利用autojs制作抢购支付宝消费劵的手机脚本

前期准备工作 1.打开支付宝,点击中间的抢消费券的广告 2.点击左上角,将抢购页面添加到首页 3.查看支付宝首页是否出现消费劵 . autojs代码 "auto"; functiontaskstart(){ sleep(1000); launchApp('支付宝'); toast("正在打开支付宝应用"); sleep(1000); varxf=textContains("消费").findOne().bounds(); ...

洛阳泰山的博客 1万+

芒果YOLOv1改进35:主干Backbone篇之MobileViTv3:全网首发最新 MobileViTv3 系列最强改进版本(三)|轻量化Transformer视觉转换器,简单有效地融合了本地全局

芒果YOLOv1改进35:主干Backbone篇之MobileViTv3:全网首发最新 MobileViTv3 系列最强改进版本(三)|轻量化Transformer视觉转换器,简单有效地融合了本地全局

包括YOLOv5、YOLOv7、YOLOv8等模型改进 417

MySQL性能提升实战(从慢查询到QPS翻倍):DBA十年经验总结

解决MySQL慢查询与高并发难题,系统讲解mysql性能调优实战方法,涵盖索引优化、SQL改写、参数调优及读写分离等核心技巧,适用于电商、金融等高负载场景,显著提升QPS,值得收藏。

LogicWander的博客 597

ADES1831和ADBMS6830

1、上电默认进入STANDBY模式,SPI发送0xFF也可以进入STANDBY模式2、看门狗定时器超时后,进入SLEEP状态3、配置寄存器中的REFON位使用WRCFGA命令将组A设置为1进入REFUP状态,此状态比待机状态更快地启动ADC转换。i<TOTAL_IC;i++)注意:读AFE数据时会随着AFE片数增加而增加,原因是唤醒时间和AFE片数密切相关,如果需要缩短时间,那么减少唤醒频次。

m0_61973119的博客 266

MySQL - EXPLAIN 执行计划

这篇文章摘要了MySQL中EXPLAIN执行计划的解读方法。主要内容包括: EXPLAIN的作用:展示查询优化器生成的执行计划,包括表连接顺序、访问方式和预计扫描行数等。 关键字段解析: id:每个SELECT对应唯一id,可判断查询结构变化 select_type:区分查询类型(简单查询/子查询/UNION等) type:单表访问方式性能排行(从const到ALL) 其他重要字段:possible_keys、key_len、ref等 通过示例说明常见场景的执行计划表现,如连接查询、子查询优化、索引使用等。

记录后端技术的深水区:MySQL、并发、JVM、分布式。原理为主,实战为辅,能少踩一个坑是一个。 356

配置 SAP Fiori 服务的 ICF 节点:从 SICF 激活到访问链路打通的完整实践

在SAP Fiori项目实施中,ICF节点配置是关键前置条件却常被忽视。ICF(Internet Communication Framework)作为HTTP请求入口,需要通过SICF事务码激活相关服务节点,否则即使应用开发完善,用户仍可能遇到页面无法访问等问题。典型问题表现为:磁贴可点击但页面空白、资源加载失败等。激活路径主要涉及三组节点:bsp分支下的管理入口、ui5_ui5分支下的应用资源,以及public/bc下的公共资源。项目实施中需特别注意同名服务在不同分支下的差异化作用,确保完整链路通畅。IC

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 264

自己的搭建的slam机器人建图导航测试

1、前言 这里是对自己搭建的slam机器人建图导航的功能测试,原本并不想写这一篇的,因为每个小伙伴的需求都不一样,但是发现还是有同学有需求,于是就有了这一篇。本篇属于说明分享类文章,不涉及细节解释。按照步骤操作即可。 本次测试需要建图算法my_slam_gmapping、导航框架navigation、以及explore_lite功能包、mbot_teleop键盘控制功能包等。 环境:ubuntu mate 16.04 + ROS Kinetic 功能包下载:在公众号:小白学移动机器人,发送:建图导航测试,即

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 8701

MySQL(进阶)万字吃透 MySQL SQL 调优:索引原理 + Explain 执行计划 + 全场景 SQL 优化 + 索引失效避坑实战

业务出现数据库卡顿、接口超时排查顺序:SQL & 索引优化 → 表结构优化 → MySQL 参数调优 → 操作系统内核优化 → 硬件扩容先做软件层面低成本优化,最后再考虑硬件升级,避免盲目扩容造成资源浪费。有索引:并发越高性能衰减平缓;无索引:少量并发就会造成 IO、CPU 打满,查询耗时指数级上涨,形成性能雪崩。百万数据下,无索引查询速度比主键索引慢几十倍;高并发场景,缺失索引会引发雪崩式性能衰减,严重影响业务;索引的核心价值:大幅减少磁盘扫描行数,降低 IO 与 CPU 消耗;

eternal__day的博客 503

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

告别 MyBatis IN 语句的 foreach 模板:自定义扩展 让 SQL 编写效率翻倍!

至此,in语句的扩展能力就完成了,将 “重复、易出错” 的foreach模板转化为 “简洁、直观” 的in #{参数}语法,不仅提升了 SQL 编写效率,还减少了语法错误的可能性。来源:juejin.cn/post/7543094107999338537后端专属技术群构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!文明发言,以交流技术职位内推行业探讨为主广告人士勿入,切勿轻信私聊,防止被骗。

2501_90198228的博客 491

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Atelier of Light and Shadow数据库应用开发:智能查询优化实践

本文介绍了如何在星图GPU平台上自动化部署📜 灵感画廊 · Atelier of Light and Shadow镜像,赋能数据库智能查询优化。该镜像可自动诊断执行计划、生成高性能SQL、发现隐性数据关系,典型应用于电商实时报表加速与SaaS多租户查询治理等场景,显著提升DBA与开发协同效率。

weixin_30218749的博客 152

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

知识体系之MySQL

mysql

JaweG 5251

研发效率翻倍!Trae IDE 十大热门 Skill 深度推荐与实战指南

在 AI 编程助手爆发的今天,仅仅会“对话”已经不够了。如何让 AI 真正理解你的项目架构、自动执行复杂任务、甚至主动优化代码?Skill(技能) 是关键!本文基于 Trae IDE 官方推荐的研发场景十大热门 Skill,由作者 小马_xiaoen为你深度解析每个技能的核心用法、适用场景及实战案例,助你打造专属的超级开发助手!

m0_46165586的博客 4003

AI代理操作数据库的节制框架:安全、性能与成本管控实践

在数据库管理与AI技术融合的背景下,大型语言模型驱动的智能代理能够执行SQL查询、分析数据模式等操作,但其自主探索行为若缺乏约束,可能引发严重问题。从技术原理看,无节制的查询生成易导致低效SQL、资源滥用及安全漏洞,例如笛卡尔积和全表扫描会直接影响数据库性能与稳定性。在工程实践中,这涉及查询生命周期管控、语义层构建与权限控制等多方面挑战。通过引入事前预防、事中执行与事后审计三道防线,结合静态分析、查询重写和资源隔离等技术,可构建安全可控的Agentic数据探索系统。本文聚焦Sophrosyne节制框架,探讨

weixin_30321449的博客 447

SQL别名实战指南:提升可读性、消除歧义、保障可维护性

SQL别名是关系型数据库查询中最基础却最常被低估的语法特性,其本质是通过表别名和字段别名实现作用域隔离与语义显化。它解决的核心问题是多表JOIN中的字段歧义、嵌套查询的作用域冲突以及复杂逻辑的可读性衰减。从原理看,别名在SQL解析阶段参与语义绑定,不影响执行计划与性能,却显著降低工程师的认知负荷。技术价值体现在三方面:防御性编程(避免`ambiguous column`错误)、业务意图表达(如用`order_summary`替代`order_items`)、模块化重构能力(支撑CTE与子查询解耦)。典型应用

weixin_33938733的博客 395

Java实习面试必备:核心知识点全解析

本文总结了Java实习生面试必备的核心知识点,涵盖Java基础、MySQL数据库和主流框架三大模块。 Java基础部分重点包括: 数据类型分类、==与equals区别、String特性和常量池机制 面向对象三大特性及接口与抽象类的对比 集合框架中ArrayList/LinkedList的区别和HashMap底层实现(数组+链表+红黑树) 异常体系、IO流、线程创建方式、synchronized和volatile关键字 MySQL数据库部分核心内容: 基础CRUD操作、多表联查和子查询语法 索引原理(B+树结

2301_80215285的博客 340

MySQL窗口函数实战:分组排序与排名的高效实现方案

在数据库开发中,排序(ORDER BY)是基础操作,但面对分组内排序和排名这类进阶需求时,传统方法往往力不从心。窗口函数作为SQL标准的一部分,为解决这类问题提供了优雅且高效的方案。其核心原理是在不改变结果集行数的前提下,在指定的数据窗口内进行计算,实现了分组排序、排名、累计计算等复杂分析功能。从技术价值看,窗口函数将以往需要多层子查询或程序循环的逻辑,简化为声明式的SQL语句,大幅提升了开发效率和查询性能。在应用场景上,它广泛应用于排行榜系统、绩效评估、数据去重、移动平均计算等业务中。本文聚焦于MySQL

weixin_34413103的博客 353

MySQL实战入门:从建表到排错的四步避坑指南

数据库本质是解决数据存储、查询、并发与可靠性问题的工程系统,其核心价值在于支撑业务稳定运行。理解索引原理、字符集配置、事务锁机制和备份恢复策略,是保障系统可用性的技术基石。MySQL作为中小项目首选,凭借InnoDB引擎的ACID支持、B+树索引成熟度及丰富生态,成为掌握数据库底层逻辑的最佳教学模型。本文聚焦真实场景中的建表规范、复合索引设计、utf8mb4字符集适配与生产级RDS配置,覆盖电商订单管理等高频需求,帮助开发者快速建立‘问题驱动’的数据库工程思维。

weixin_30411239的博客 444
上一篇: 构建永不宕机的分布式系统(Erlang高可用实战精华)
下一篇: Oracle RAC环境下全局锁管理难题破解(实战案例+调优脚本)
LiteCode
博客等级 码龄1年 146粉丝 2019原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值