SQL语句优化,基本介绍

使用工具找出导致速度变慢的sql语句。

1,SQL优化的一般步骤:

(1)通过show status命令了解各种SQL的执行频率。

(2)定位执行效率较低的SQL语句,重点是select语句。(核心)

(3)通过explain分析低效率的SQL语句的执行情况。

(4)确定问题并采取相应的优化措施。

 

面试题:SQL语句有几类?

l  DDL,数据定义语言,create alterdrop

l  DML,数据操作语言,insert deleteupdate

l  Select

l  DTL,数据事务语言,commitrollback savepoint

l  DCL,数据控制语句,grant revoke

 

通过show status 命令,可以显示你的MySQL数据库的当前状态,我们主要关心的是以“com”开头的指令。

Show status like ‘com%’显示所有以com打头的状态。

得到状态,比如com_insert 可以指示从数据库开启到现在执行过多少次insert语句。

Show status like ‘com%’等价于show status sessionlike ‘com%’。

Session就是当前规划,指的是当前控制台启动后的数据库状态。

还有一种是:show status global like ‘com%’;这个是显示数据库从启动到查询的次数。


还有几个常用的参数便于用户了解数据库的基本情况。

Connections:试图连接MySQL服务器的次数。

Uptime:服务器工作的时间(单位秒)。

Slow_queries慢查询的次数(默认是10)。


Connections可用于测试数据库的并发量。如果值很大的话,就要考虑并发的问题了。

9124秒

Uptime用于测试服务器到目前为止的运行时间,通常时间半年的时间就应该重启一次。

 

重要:slow_queries慢查询,通常默认是如果一个查询语句在数据库的查询的响应时用了10秒以上才返回,就认为是慢查询。所以说,如果这个数值越高,就说明一些查询语句是有问题的。


通常认为,一个查询超过两秒,就算慢查询。

我们优化的重点就在慢查询上,默认的慢查询时间是10秒。

通过下列语句查询慢查询的时间:show variables like ‘long_query_time’


Mysql中,通过delimiter定义结束符,例如delimiter $$,把之前的结束符;改为$$,所以现在再操作数据库,这么写是不行的:select * from emp;,必须这么写:select * from emp$$。

 

在MySQL中自定义函数的脚本:

 

这个函数在给定的字符串中随机产生n个字符组成的字符串,

[sql]  view plain copy
  1. select hsp(sal) from emp;  
  2. create function rand_string(n INT)  
  3. returns varchar(255)  
  4. begin  
  5.     declare chars_str varchar(100) default  
  6.         'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';  
  7.     declare return_str varchar(255) default ";  
  8.     declare i int default 0;  
  9.     while i < n do  
  10.         set return_str = concat(return_str.substring(chars_str.floor(1+rand()*52),1));  
  11.         set i = i + 1;  
  12.     end while;  
  13.     return return_str;  
  14. end$$  

删除自定义函数:drop function rand_string。


随机产生一个数的函数:

[sql] view plaincopy

  1. create function rand_num()  
  2. returns int(5)  
  3. begin  
  4.     declare i int default 0;  
  5.     set i = floor(10+rand()*500);  
  6.     return i;  
  7. end$$  

这个函数用于产生海量数据:

[sql]  view plain copy
  1. delimiter$$  
  2. create procedure insert_emp(in start int(10),in max_num int(10))  
  3. begin  
  4.     declare i int default 0;  
  5.     set autocommit = 0;  
  6.     repeat  
  7.     set i = i + 1;  
  8.     insert into emp values((start+i),rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());  
  9.     until i = max_num  
  10.     end repeat;  
  11.     commit;  
  12. end$$  

调用函数,从100001号开始,产生1800000条记录。

  1. delimiter;  
  2. call insert emp(100001,1800000);  

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值