最新消息:欢迎加入小松的QQ群一起讨论一起学习,又一个双十一,剁手快乐

mysql性能实验(一)

MYSQL 540浏览 0评论

1、mysql性能实验(一)

2、mysql性能实验(二)

3、mysql性能实验(三)

4、mysql性能实验(四)待续

最近公司的平台要优化代码关于以下3个问题是否影响效率用实验的方式要证明一下,之前都了理论上面的
1、mysql排序不能用主键(我同事说mysql会有这个问题)
2、where条件的顺序是否影响效率(平台优化要做的内容)
3、mysql多个索引是否只使用其中一个索引(这个的文章有些到)
测试平台为我win7系统
进入mysql命令平台查一下当前的mysql的版本

show variables like 'version';

mysql查看版本

我的如图为mysql5.6.11版本
下面开始模拟mysql数据

CREATE TABLE `demo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
`age` int(8) DEFAULT NULL,
`word` varchar(2) NOT NULL,
`word1` varchar(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11100011 DEFAULT CHARSET=utf8;
delimiter //
create function rs(n int)
returns varchar(1024)
begin
declare chars char(52) default 'abcdefghijklmnopqrstuvwxyz';
declare res varchar(1024) default '';
declare i int default 0;
repeat
set i = i + 1;
set res = concat(res,substring(chars,floor(1+rand()*52),1));
until i=n end repeat;
return res;
end;

delimiter //
create function rn()
returns smallint
BEGIN
DECLARE res smallint DEFAULT 0;
set res=floor(1+rand()*100);
return res;
end;

delimiter //
create procedure inst(n int)
begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i + 1;
insert into demo(id,username,password,age,word,word1) values('',rs(6),rs(8),rn(),rs(2),rs(1));
until i=n end repeat;
commit;
set autocommit = 1;
end;

CALL inst(10000000);

测试数据为1千万的数据,在执行call的时候会比较花时间,请耐心等待,执行之后在添加索引

ALTER TABLE `demo` ADD INDEX username ( `username` );
ALTER TABLE `demo` ADD INDEX word1 ( `word1` );

添加索引的时候请一条条执行,数据量多,执行慢

QQ交流群:136351212

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
转载保留版权:小松博客» mysql性能实验(一)
本文链接地址:https://www.phpsong.com/965.html

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
木有头像就木有JJ!点这里按步骤申请Gravatar头像吧!