当前位置:Gxlcms > 数据库问题 > mysql09---sql语句优化

mysql09---sql语句优化

时间:2021-07-01 10:21:17 帮助过:2人阅读

技术分享图片

 技术分享图片

一定要指定数据库,因为函数,视图,存储过程是在数据库下面的。

技术分享图片

 

技术分享图片
#这里我们又自定了一个函数,返回一个随机数
create function rand_num( )
returns int(5)
begin 
 declare i int default 0;
 set i = floor(10+rand()*500);
return i;
end $$

创建一个存储过程:增加雇员,
create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0; 
#set autocommit =0 把自动提交autocommit设置成0不让他提交,最后统一提交。
 set autocommit = 0;  
 repeat
     set i = i + 1;
     insert into emp values ((start+i) ,rand_string(6),SALESMAN‘,0001,curdate(),2000,400,rand_num());
      until i = max_num
 end repeat;
   commit;
end $$


#调用刚刚写好的函数, 1800000条记录,从100001号开始,大表创建完毕。
call insert_emp(100001,4000000);
技术分享图片

 

技术分享图片
mysql> select count(*) from emp$$
+----------+
| count(*) |
+----------+
|  4000000 |
+----------+


①这时我们如果出现一条语句执行时间超过1秒中,就会统计到(sql语句都有,不仅仅是查询语句). 
②如果把慢查询的sql记录到我们的一个日志中

先关闭mysql(计算机---服务--stop),再启动, 

在默认情况下,我们的mysql不会记录慢查询,需要在启动mysql时候,指定记录慢查询才可以,以下面的方式启动:
bin\mysqld.exe --safe-mode  --slow-query-log   #安全模式会写日志,能够恢复数据, [mysql5.5 可以在my.ini指定],启动完成之后会在data中生成log文件
bin\mysqld.exe –log-slow-queries=D:\MYSQL\abc.log       [低版本mysql5.0可以在my.ini指定]

如果启用了慢查询日志,默认把这个文件放在my.ini 文件中记录的位置(如果只是拷贝数据库文件,那么索引是要失效的,要重建索引,数据库迁移而不是直接拷贝文件。)(最好不要修改这里)
#Path to the database root
datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/"

③测试,可以看到在日志中就记录下我们的mysql慢sql语句.


优化问题. 
通过 explain 语句可以分析,mysql如何执行你的sql语句, 这个工具的使用放一下,一会说.

添加索引 【小建议: 】 

mysql09---sql语句优化

标签:文件   ble   signed   my.ini   数据   while   pre   mysql   sub   

人气教程排行