MySQL查询优化实战:从基础语法到索引设计与性能调优
1. 从“查”开始为什么你需要一份自己的MySQL语句手册每次接手一个新项目或者隔了几个月再回头维护老代码面对数据库时你是不是也经常有这种感觉这个查询条件怎么写来着那个统计函数的具体参数是啥明明记得上次用过但就是想不起来确切的语法。然后就是打开搜索引擎在无数个技术博客和官方文档的碎片信息里翻找运气好几分钟找到运气不好半小时就搭进去了。这就是我为什么强烈建议无论是刚入行的新人还是像我这样干了十多年的老油条都应该有一份自己整理、随时可查的MySQL基本语句手册。这份手册不是官方文档的复刻而是你个人工作流和知识体系的沉淀。它记录的是你最常用、最容易忘、或者曾经踩过坑的那些语句。当别人还在“SELECT * FROM ...”的时候你已经能精准地写出带窗口函数的复杂分析查询效率自然就拉开了。今天要聊的就是如何构建这样一份属于你自己的、以“查找”为核心的MySQL语句速查手册。我们不会面面俱到地罗列所有语法——那是官方文档的事。我们会聚焦在“查找”这个核心动作上从最简单的单表查询到多表关联的复杂逻辑再到利用索引让查找飞起来的优化技巧。我会把我这些年高频使用的、以及那些“血泪教训”换来的语句模板和注意事项都放进来你可以直接复制粘贴也可以在此基础上添砖加瓦形成你的独门秘籍。2. 基石SELECT语句的完全拆解与高频模板几乎所有查找操作都始于SELECT。但SELECT *只是起点真正的效率来自于精准的字段选择、条件过滤和结果加工。2.1 字段选择与数据过滤告别“全表扫描”的第一步很多人写查询习惯性SELECT *这在小表或开发阶段无可厚非但在生产环境或大数据量表里这是性能的“头号杀手”。它意味着数据库需要读取每一行的所有数据包括你可能根本用不上的TEXT、BLOB大字段浪费大量I/O和网络带宽。精准选择字段-- 不推荐 SELECT * FROM users WHERE status active; -- 推荐只取需要的字段 SELECT id, username, email, created_at FROM users WHERE status active;养成只查询所需字段的习惯这是对数据库最基本的尊重也是提升查询效率最立竿见影的方法。WHERE子句的深度运用WHERE是查找的“方向盘”。除了基本的、、、LIKE有几个组合拳特别好用BETWEEN AND范围查询对于时间、数字区间特别友好而且能利用索引。-- 查找2023年的订单 SELECT order_id, amount FROM orders WHERE order_date BETWEEN 2023-01-01 AND 2023-12-31;IN vs. OR当需要匹配多个离散值时IN在语义上更清晰且通常比一连串的OR有更好的性能特别是当IN列表内的值很多时优化器处理方式可能更优。-- 查找状态为待支付或已发货的订单 SELECT * FROM orders WHERE status IN (pending, shipped);LIKE与通配符的陷阱LIKE %keyword%这种前后都加通配符的写法会导致索引失效因为它要求进行全表扫描。如果可能尽量使用LIKE keyword%前缀匹配这样在某些索引如前缀索引下可能有效。-- 可能无法使用索引取决于数据分布和索引类型 SELECT * FROM products WHERE name LIKE %手机%; -- 可以使用name字段上的索引进行范围扫描 SELECT * FROM products WHERE name LIKE 苹果%;2.2 结果集加工ORDER BY, LIMIT, DISTINCT的实战心得查出来数据后如何呈现同样关键。ORDER BY的排序成本排序是一个成本较高的操作尤其是当结果集很大时。如果ORDER BY的字段没有索引MySQL可能需要使用临时文件进行文件排序Using filesort这在EXPLAIN执行计划中可以看到。为常用的排序字段建立索引能极大提升排序查询性能。LIMIT分页的经典深坑LIMIT在偏移量很大时性能极差。-- 经典的性能陷阱查询第10000页每页20条 SELECT * FROM orders ORDER BY id LIMIT 200000, 20;这条语句会先读取200020条记录然后抛弃前200000条返回最后20条。数据量越大越慢。优化方案是使用“游标分页”或“基于索引的延迟关联”。-- 优化方案使用WHERE id last_id 代替大偏移量 SELECT * FROM orders WHERE id 上一页最后一条记录的id ORDER BY id LIMIT 20;DISTINCT与GROUP BY的去重选择DISTINCT用于去除整个行完全相同的重复而GROUP BY通常用于聚合。但有时它们可以互换。我的经验是如果只是为了去重用DISTINCT语义更清晰如果去重后还要进行计数、求和等操作则必须用GROUP BY。注意DISTINCT操作也会涉及排序和临时表数据量大时需留意性能。3. 连接JOIN的艺术从二维表到关系网络单表查询解决不了的问题就需要JOIN。它是关系型数据库的灵魂也是最容易写出性能问题的地方。3.1 INNER JOIN精准匹配的“交集”逻辑INNER JOIN是最常用的一种它只返回两个表中连接条件匹配的行。写INNER JOIN时关键要理清连接条件ON和过滤条件WHERE的区别。-- 查找所有下了订单的用户信息仅包含有订单的用户 SELECT u.username, o.order_id, o.amount FROM users u INNER JOIN orders o ON u.id o.user_id;这里ON u.id o.user_id定义了表之间的关系是连接的一部分。而如果我想进一步筛选“2023年的订单”这个条件应该加在WHERE子句里因为它是对连接后结果集的过滤。一个常见误区在ON子句中添加额外的过滤条件非等值连接条件可能会改变结果集特别是在处理LEFT JOIN时。对于INNER JOIN由于只返回匹配行把过滤条件放在ON或WHERE最终结果可能一样但逻辑含义不同。我个人的习惯是纯等值关联条件放ON结果集过滤条件一律放WHERE这样逻辑最清晰。3.2 LEFT/RIGHT JOIN处理“可能有可能没有”的关系LEFT JOIN左连接是以左表为基准即使右表没有匹配左表的记录也会全部返回右表字段以NULL填充。这是查找“有还是没有”类问题的利器。-- 查找所有用户并显示他们的最近一笔订单可能为NULL SELECT u.id, u.username, o.order_id, o.amount FROM users u LEFT JOIN orders o ON u.id o.user_id AND o.id ( -- 这是一个关联子查询用于找出每个用户的最近订单 SELECT MAX(id) FROM orders o2 WHERE o2.user_id u.id );这个查询比在WHERE子句中使用子查询更清晰也更容易处理“用户没有订单”的情况。注意这里找最近订单的条件是放在ON子句里的因为它属于连接逻辑的一部分定义什么样的右表记录能与左表匹配而不是对最终结果的过滤。RIGHT JOIN同理只是以右表为基准。但实践中我几乎从不使用RIGHT JOIN因为任何RIGHT JOIN都可以改写为逻辑更直观的LEFT JOIN只需调换表顺序。统一使用LEFT JOIN能降低团队的理解成本。3.3 多表连接与别名管理保持清晰的可读性当连接超过3张表时查询会迅速变得复杂。这时使用有意义的表别名至关重要。-- 混乱的写法 SELECT a.name, b.title, c.value, d.status FROM table1, table2, table3, table4 WHERE ... -- 清晰的写法 SELECT usr.name AS user_name, ord.title AS order_title, pay.amount AS payment_amount, log.status AS latest_status FROM users usr INNER JOIN orders ord ON usr.id ord.user_id LEFT JOIN payments pay ON ord.id pay.order_id LEFT JOIN status_log log ON ord.id log.order_id AND log.is_latest 1;使用别名usr,ord,pay,log并给每个字段起别名AS user_name能让SQL自解释别人或三个月后的你自己一眼就能看懂每个字段来自哪里、代表什么。4. 聚合与分组让数据自己“说话”查找不仅是把数据拿出来更是把数据背后的信息提炼出来。这就是GROUP BY和聚合函数的舞台。4.1 经典聚合函数COUNT, SUM, AVG, MAX, MIN这些函数是数据分析的基石。有几个细节需要注意COUNT(*) vs COUNT(column)COUNT(*)统计所有行数包括NULLCOUNT(column)统计该列非NULL值的数量。如果想统计唯一值数量用COUNT(DISTINCT column)。SUM/AVG与NULLSUM和AVG会自动忽略NULL值。但有时这可能不是你想要的行为可能需要先用COALESCE(column, 0)将NULL转换为0。MAX/MIN与字符串/日期它们也适用于字符串按字典序和日期时间类型。4.2 GROUP BY的“规矩”与WITH ROLLUP的妙用使用GROUP BY时SELECT列表中只能出现两种字段聚合函数或者GROUP BY子句中出现的字段。这是SQL的标准MySQL在非严格模式下可能允许不规范的写法但强烈建议遵守因为这是可移植性和结果正确性的保证。WITH ROLLUP是一个超级实用的扩展它能在分组结果的基础上生成小计和总计行。-- 按部门和职位统计薪资总和并生成各级小计和总计 SELECT department, position, SUM(salary) AS total_salary FROM employees GROUP BY department, position WITH ROLLUP;结果中department为NULL而position不为NULL的行是某个部门内所有职位的薪资小计department和position都为NULL的行是整个公司的薪资总计。这在制作报表时非常方便。4.3 HAVING对聚合结果进行过滤WHERE在分组前过滤行HAVING在分组后过滤组。这是它们的核心区别。-- 查找订单总额超过10000元的客户 SELECT user_id, SUM(amount) AS total_amount FROM orders GROUP BY user_id HAVING SUM(amount) 10000;注意HAVING子句中可以使用聚合函数如SUM(amount)也可以使用SELECT中定义的别名如total_amount但为了清晰和兼容性我更喜欢直接使用聚合表达式。5. 子查询与衍生表在查询中嵌套查询当一步查询搞不定时就需要子查询。它可以出现在SELECT、FROM、WHERE等各个地方。5.1 标量子查询与关联子查询标量子查询返回单个值的子查询可以当作一个值来使用。-- 查找高于平均薪资的员工 SELECT name, salary FROM employees WHERE salary (SELECT AVG(salary) FROM employees);关联子查询子查询的执行依赖于外部查询的当前行。-- 查找每个部门中薪资最高的员工方法之一 SELECT department, name, salary FROM employees e1 WHERE salary ( SELECT MAX(salary) FROM employees e2 WHERE e2.department e1.department -- 关联条件 );关联子查询可能性能不佳因为它需要为外部查询的每一行都执行一次子查询。对于这类“组内最值”问题现代SQL更推荐使用窗口函数后面会讲。5.2 IN, EXISTS与衍生表Derived TableIN检查某个值是否在子查询返回的集合中。如果子查询结果集很大IN的性能可能成为问题。MySQL 5.6之后对IN子查询有较多优化但仍需注意。EXISTS只关心子查询是否返回行不关心具体内容。通常在半连接semi-join场景下EXISTS的性能可能优于IN特别是当子查询可以快速返回一个“是否存在”的布尔值时。-- 使用EXISTS查找有订单的用户 SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id u.id);SELECT 1是一种惯例因为EXISTS只关心有没有行不关心行的内容。衍生表把子查询放在FROM子句中当作一个临时表来使用。务必给衍生表起别名。-- 先计算每个部门的平均薪资作为一个临时表再与其他表连接 SELECT e.name, e.salary, dept_avg.avg_sal FROM employees e INNER JOIN ( SELECT department, AVG(salary) AS avg_sal FROM employees GROUP BY department ) dept_avg ON e.department dept_avg.department;衍生表会生成临时表如果数据量大可能影响性能。可以考虑使用公共表表达式CTEMySQL 8.0来提升可读性。6. 窗口函数数据分析的“降维打击”如果你是MySQL 8.0或更高版本的用户那么窗口函数是你必须掌握的利器。它允许你在不减少行数的情况下对数据进行分组、排序和计算。6.1 排名函数ROW_NUMBER, RANK, DENSE_RANK它们都用于排名但处理并列的方式不同。-- 按部门分区按薪资降序排名 SELECT department, name, salary, ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS row_num, -- 连续唯一排名 RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rank_num, -- 并列会跳号 DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS dense_rank_num -- 并列不跳号 FROM employees;ROW_NUMBER()生成连续的、唯一的序号即使值相同。RANK()相同的值排名相同但下一个排名会跳号。例如两个并列第一下一个是第三名。DENSE_RANK()相同的值排名相同且下一个排名连续。例如两个并列第一下一个是第二名。6.2 聚合窗口函数与滑动窗口聚合函数加上OVER子句就变成了窗口函数可以计算移动平均、累计求和等。-- 计算每个员工的薪资在其部门中的占比以及部门内薪资的累计和 SELECT department, name, salary, salary / SUM(salary) OVER (PARTITION BY department) AS salary_ratio, SUM(salary) OVER (PARTITION BY department ORDER BY hire_date) AS cumulative_salary -- 按入职日期累计 FROM employees;ORDER BY在窗口函数中定义了窗口框架window frame的默认范围。在上面的累计求和中ORDER BY hire_date意味着框架是从分区第一行到当前行RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW。你还可以定义更灵活的滑动窗口-- 计算每个员工及其前后各一人的平均薪资滑动平均 SELECT name, salary, AVG(salary) OVER (ORDER BY salary ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS moving_avg FROM employees;7. 索引让查找从“遍历”变成“翻目录”没有索引的查找就像在图书馆里一本一本地找书。而正确的索引就像一本详细的目录。但索引不是越多越好需要精心设计。7.1 如何为查找语句设计索引索引设计的黄金法则索引应该建在WHERE子句、JOIN的ON条件、ORDER BY和GROUP BY的字段上。单列索引最基础的索引。为经常作为查询条件的字段建立。CREATE INDEX idx_status ON orders(status);复合索引最左前缀原则这是最需要理解透彻的。如果你有一个索引(col1, col2, col3)那么它可以用于以下查询WHERE col1 ?有效WHERE col1 ? AND col2 ?有效WHERE col1 ? AND col2 ? AND col3 ?有效WHERE col2 ? AND col3 ?无效因为跳过了最左边的col1WHERE col1 ? AND col3 ?部分有效只能用上col1col3无法用于查找但可能用于覆盖索引 因此设计复合索引时要把区分度最高唯一值多的字段放在左边并且考虑查询条件的顺序。覆盖索引如果一个索引包含了查询所需要的所有字段那么MySQL就可以直接从索引中获取数据而无需回表再去主键索引查数据行这被称为“覆盖索引”是性能优化的大杀器。-- 假设有索引 (user_id, status) SELECT user_id, status FROM orders WHERE user_id 123; -- 覆盖索引性能极佳 SELECT * FROM orders WHERE user_id 123; -- 需要回表查所有列7.2 使用EXPLAIN解读执行计划写完一条复杂的查找语句一定要用EXPLAIN或EXPLAIN FORMATJSON看看它的执行计划。关注以下几个关键字段type访问类型从好到坏大致是systemconsteq_refrefrangeindexALL。ALL表示全表扫描是需要重点优化的。key实际使用的索引。rows预估需要扫描的行数。Extra额外信息。出现Using filesort文件排序或Using temporary使用临时表通常意味着性能瓶颈。通过EXPLAIN你可以验证你的索引是否被正确使用以及查询是否按照你期望的方式执行。8. 性能陷阱与最佳实践来自实战的“避坑指南”手册里不能只有“怎么做”还得有“不要怎么做”。以下是我总结的几个高频性能陷阱。8.1 隐式类型转换导致索引失效这是最隐蔽的坑之一。当查询条件中字段的类型与传入值的类型不一致时MySQL可能会进行隐式类型转换导致索引失效。-- 假设user_id是INT类型但数据库里存的是字符串123 CREATE INDEX idx_user_id ON orders(user_id); -- 如果这样查询传入字符串索引可能失效 SELECT * FROM orders WHERE user_id 123; -- 应该传入数字 SELECT * FROM orders WHERE user_id 123;养成保持类型一致的习惯或者在应用层就做好类型转换。8.2 OR条件与索引使用简单的OR条件很容易让索引失效。-- 假设在status和category上分别有单列索引 SELECT * FROM products WHERE status active OR category electronics;这条查询可能无法有效使用任何一个单列索引。优化方案是改写为UNIONSELECT * FROM products WHERE status active UNION SELECT * FROM products WHERE category electronics;这样两个子查询可以分别利用status索引和category索引。注意UNION会去重如果确定结果无重复或需要保留重复可以用UNION ALL性能更好。8.3 大表分页查询的优化前面提到了LIMIT大偏移量的性能问题。除了使用“游标分页”WHERE id last_id另一种思路是使用“延迟关联”。-- 原始慢查询 SELECT * FROM large_table ORDER BY create_time DESC LIMIT 1000000, 20; -- 延迟关联优化 SELECT * FROM large_table t INNER JOIN ( SELECT id FROM large_table ORDER BY create_time DESC LIMIT 1000000, 20 ) AS tmp ON t.id tmp.id ORDER BY t.create_time DESC;内层子查询只查询主键id和排序字段由于数据量小只有20个id排序和偏移的成本大大降低。然后通过主键id快速回表取出这20条记录的完整数据。这个技巧在排序字段有索引时效果显著。构建你自己的MySQL查找语句手册本质上是一个不断实践、总结和提炼的过程。从今天起每当你解决一个复杂的查询问题或者从EXPLAIN执行计划中学到新东西都把它记录到你的手册里。久而久之这份手册就会成为你最得力的助手让你在面对任何数据查找需求时都能从容不迫信手拈来。记住最好的手册不是最全的而是最适合你的。

相关新闻

VSCode离线配置全攻略:内网开发环境部署与插件安装实战

VSCode离线配置全攻略:内网开发环境部署与插件安装实战

1. 项目缘起:为什么我们需要离线配置VSCode? 作为一名常年和代码打交道的开发者,我经历过太多次这样的场景:新入职一家公司,领到一台全新的开发机,网络环境却限制重重,或者干脆就是内网隔离&…

2026/8/15 8:16:00 阅读更多 →
NVIDIA Nemotron 3.5 Lightning:构建长时运行AI智能体的实战指南

NVIDIA Nemotron 3.5 Lightning:构建长时运行AI智能体的实战指南

最近在尝试构建能够长时间运行、稳定执行复杂任务的AI智能体时,你是否也遇到过这样的困扰:模型推理速度慢、上下文窗口有限导致“遗忘”早期对话、多轮交互后性能下降,或者部署成本高昂难以持续运行?这些痛点正是当前智能体技术从…

2026/8/15 8:16:00 阅读更多 →
Pandas实战:智能处理多Excel文件表头映射与数据汇总

Pandas实战:智能处理多Excel文件表头映射与数据汇总

1. 项目背景与核心痛点:当数据源“各自为政”时 如果你也经常需要处理来自不同部门、不同系统导出的Excel报表,那你一定对下面这个场景不陌生:手头有十几个甚至几十个Excel文件,每个文件都叫“销售数据.xlsx”,但打开一…

2026/8/15 8:16:00 阅读更多 →

最新新闻

从零搭建私有Docker仓库:HTTPS认证、生产部署与运维指南

从零搭建私有Docker仓库:HTTPS认证、生产部署与运维指南

1. 项目概述:为什么你需要一个私有的Docker仓库? 在容器化开发与部署已经成为主流的今天,Docker镜像就像我们软件项目的“集装箱”。Docker Hub作为公共的镜像市场,方便快捷,但直接把公司内部的应用镜像、中间件定制镜…

2026/8/15 9:01:16 阅读更多 →
把 AI 放进受控系统:一套让 AI 真正为你工作的方法论

把 AI 放进受控系统:一套让 AI 真正为你工作的方法论

ㅤ作者:黑夜路人时间:2026 年 8 月ㅤㅤ今天的大模型已经足够强大:能写作、能编程、能查资料、能分析数据,还能调用工具,替人完成跨系统的复杂任务。但「能力强」不等于「可以放心使用」。当 AI 开始修改文件、发送消息…

2026/8/15 9:01:16 阅读更多 →
从错误现场到可重复实验,SAP Gateway Client 与 Payload Trace 的联动排错机制

从错误现场到可重复实验,SAP Gateway Client 与 Payload Trace 的联动排错机制

一个 SAP Fiori 应用在浏览器里调用 OData 服务,页面突然弹出保存失败。前端同事打开 Chrome DevTools,看到一个 HTTP 500。ABAP 同事进入后台检查代码,却发现直接执行相关逻辑没有异常。到了移动端场景,情况还会更麻烦,原始请求可能来自 SAP Service and Asset Manager 这…

2026/8/15 9:00:15 阅读更多 →
Java 30年最大变革:一文彻底读懂 JEP 401 Value Objects

Java 30年最大变革:一文彻底读懂 JEP 401 Value Objects

摘要:Value Objects 是 Java 语言演进史上一次触及根本的变革,源自 Project Valhalla 长达十余年的探索。它通过消除对象身份、移除对象头与间接引用,让对象像基本数据类型一样紧凑高效地驻留内存,彻底化解了自 1995 年“二元类型…

2026/8/15 9:00:15 阅读更多 →
AI智能体架构解析:从核心原理到企业级应用实践

AI智能体架构解析:从核心原理到企业级应用实践

1. 从“智能体”到“为所欲为”:一个技术人的冷思考 最近,我的信息流被一个极具冲击力的标题刷屏了:“150 万个智能体在人间为所欲为”。这标题,乍一看像是科幻小说的开篇,或者某个营销号的惊悚预言。但作为一个常年泡…

2026/8/15 9:00:15 阅读更多 →
一个工作区,统一驾驭 Claude Code、Codex 和你的所有 AI Agent:holaOS 深度体验!

一个工作区,统一驾驭 Claude Code、Codex 和你的所有 AI Agent:holaOS 深度体验!

一个工作区,统一驾驭 Claude Code、Codex 和你的所有 AI Agent:holaOS 深度体验 如果你同时用过 Claude Code、Codex 或其他 AI 编程/办公 Agent,大概率遇到过这些烦心事: 换一个 Agent,就要重新交代一遍项目背景、个人偏好、工作习惯;关掉窗口再打开,Agent “失忆”,之前聊的…

2026/8/15 9:00:15 阅读更多 →

日新闻

内景 空间站内部 中国空间站 太空 内仓

内景 空间站内部 中国空间站 太空 内仓

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 空间站内部 中国空间站 太空 内仓 地址:本地PC端运行(或Web…

2026/8/15 0:00:30 阅读更多 →
重新定义数据接口:3个突破性场景让通达信数据读取更智能

重新定义数据接口:3个突破性场景让通达信数据读取更智能

重新定义数据接口:3个突破性场景让通达信数据读取更智能 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 当我们面对海量金融数据时,传统的数据获取方式往往让我们陷入困境—…

2026/8/15 0:00:30 阅读更多 →
一文读懂快消WMS怎么选?2026年国内外10大主流WMS品牌盘点

一文读懂快消WMS怎么选?2026年国内外10大主流WMS品牌盘点

快消品(FMCG)是流通速度较快、竞争较为激烈的行业之一。一瓶饮料从出厂到消费者手中,往往只有几十天甚至几天的周转窗口。这决定了快消行业的仓储管理系统(WMS)与制造业、电商行业存在明显区别:它不仅需要管…

2026/8/15 0:02:30 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →