MySQL性能优化

本文介绍MySQL中的实用技巧,包括正则表达式使用、随机行提取、分组统计、外键注意事项及常见帮助命令。此外,还详细讲解了SQL语句优化步骤、索引优化、表检查与优化以及数据库和服务器层面的优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 Mysql Sql语句技巧与优化

1.Mysql Sql语句技巧

1).正则表达式的使用

正则表达式使用很广泛,很多编程语言都会使用到,MySQL也是有很好的支持的。例如使用LIKE进行模糊查询会很方便,让语句简短。

可以通过以下命令查看MySQL正则表达式的语法:

mysql> ? regexp

比如:

mysql> SELECT "java is OK" REGEXP "java*";
mysql> SELECT name,email FROM t1 WHERE email REGEXP "@163[.,]com$";
符号说明
^在字符串开始处进行匹配
$在字符串末尾处进行匹配
.匹配单个任意字符(包括换行符)
[…]匹配出[]中的任意字符
[^…]匹配不出现[]中的任意字符
*匹配0个或多个字符(包含空串)
+匹配至少1个字符(不含空串)
?匹配0个1个字符
a|b匹配a或b
a(m)匹配m个a
a(m,)匹配至少m个a
a(m,n)匹配m到n个a
a(,n)匹配0到n个a
(…)将模式元素组成单一元素

建议看JavaScript、Linux Shell编程中的正则表达式使用。

2).巧用RAND()提取随机行

MySQL数据库中的RAND()函数是获取一个0~1之间的数,利用这个函数和ORDER BY一起能够很好的把数据随机排序,可能有时会对记录进行抽样,例如:

mysql> SELECT * FROM stu ORDER BY RAND() LIMIT 3;

3).利用GROUP BY的WITH ROLLUP子句统计

使用GROUP BY的WITH ROLLUP子句可以检索出更多的分组聚合信息,效果会更好,例如:

mysql> SELECT cname,pname COUNT(pname) AS total FROM demo BROUP BY cname,pname WITH ROLLUP;

注意:WITH ROLLUP不能和ORDER BY同时使用!!!缺点是有时候不好把控。

4).用BIT GROUP FUNCTIONS做统计

在使用GROUP BY语句的同时可以使用BIT_AND、BIT_OR函数来完成统计工作,这两个函数主要是做数值之间的逻辑位运算。例如,对t_order表的id分组时对kind做位运算:

mysql> SELECT id,BIT_AND(kind) FROM t_order GROUP BY id;
mysql> SELECT id,BIT_OR(kind) FROM t_order GROUP BY id;

5).使用外键需要注意的问题

InnoDB类型的表支持外键,MyISAM类型的表虽然创建外键可以成功,但是不起作用,主要原因是MyISAM数据引擎不支持外键。

6).mysql中help的使用

?命令用来进行帮助查询。

二 Mysql Sql语句优化

1).优化Sql语句优化的一般步骤

a) 通过SHOW status 命令了解各种SQL语句的执行频率,格式:
SHOW [session|global] status;
其中:session(默认)表示当前连接会话;global表示数据库启动至今
例如:

mysql> SHOW status;                     -- 查看全部status
mysql> SHOW status LIKE "Innodb_rows%"; -- InnoDB引擎CRUD相关
mysql> SHOW global status;              -- 数据库启动至今的status
mysql> SHOW global status LIKE "Com_";  -- 数据库启动至今的CURD统计数据
mysql> SHOW status LIKE "Com_";         -- CRUD次数统计相关
mysql> SHOW status LIKE "Connect%";     -- 连接MySQL的数量
mysql> SHOW status LIKE "Uptime%";      -- MySQL服务器已经工作的秒数
mysql> SHOW status LIKE "%slow_%";      -- 慢查询相关

b) 定位执行效率较低的SQL语句

mysql> EXPLAIN SELECT * FROM stu WHERE score > 80\G;
mysql> DESC SELECT * FROM stu WHERE score >= 80\G;

结果中重点查看以下数值:

  • rows: 影响行数
  • type: 连接类型
    (性能:system>const>eq_ref>ref>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all)
  • select_type: 查询类型
  • possible_keys:可能使用到的索引
  • key: 是否使用到索引
  • key_len: 使用到的索引列中某个值最大长度
  • Extra: SQL执行情况说明和描述

c) 根据慢查询日志,分析执行效率低的SQL语句,对该创建索引的列创建索引、复杂查询创建视图等。

三 Mysql索引优化

1. 索引优化

2. 表检查与表优化

1) check表检查
2) optimize表优化

3. 常用sql的优化

1) 大批量导入数据
2) insert优化
3) group by优化
4) 嵌套查询优化

四 数据库优化与服务器优化

1. 数据库优化

1) 优化表的类型
2) 分库分表
3) 分区技术
4) 使用中间表提高统计查询速度

2. mysql服务器优化

1) myisam表锁
2) 四种字符集问题
3) binary log日志问题
4) slow log慢查询日志
5) socket丢失问题
6) root密码破解

内容概要:本文深入解析了扣子COZE AI编程及其详细应用代码案例,旨在帮助读者理解新一代低门槛智能体开发范式。文章从五个维度展开:关键概念、核心技巧、典型应用场景、详细代码案例分析以及未来发展趋势。首先介绍了扣子COZE的核心概念,如Bot、Workflow、Plugin、Memory和Knowledge。接着分享了意图识别、函数调用链、动态Prompt、渐进式发布及监控可观测等核心技巧。然后列举了企业内部智能客服、电商导购助手、教育领域AI助教和金融行业合规质检等应用场景。最后,通过构建“会议纪要智能助手”的详细代码案例,展示了从需求描述、技术方案、Workflow节点拆解到调试与上线的全过程,并展望了多智能体协作、本地私有部署、Agent2Agent协议、边缘计算插件和实时RAG等未来发展方向。; 适合人群:对AI编程感兴趣的开发者,尤其是希望快速落地AI产品的技术人员。; 使用场景及目标:①学习如何使用扣子COZE构建生产级智能体;②掌握智能体实例、自动化流程、扩展能力和知识库的使用方法;③通过实际案例理解如何实现会议纪要智能助手的功能,包括触发器设置、下载节点、LLM节点Prompt设计、Code节点处理和邮件节点配置。; 阅读建议:本文不仅提供了理论知识,还包含了详细的代码案例,建议读者结合实际业务需求进行实践,逐步掌握扣子COZE的各项功能,并关注其未来的发展趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值