mysql的三大引擎是什么_MySql系列-sql语句优化 & 三大存储引擎 & 数据库备份与恢复...

①使用group by分组查询是,默认分组后,还会排序,可能会降低速度,在group by后面增加order by null就可以防止排序.

explain select * from emp  group by deptno order by null;

②有些情况下,可以使用连接来替代子查询。因为使用join,MySQL

不需要在内存中创建临时表。

select * from dept, emp where dept.deptno=emp.deptno;

简单处理方式 :

select * from dept left join emp on dept.deptno=emp.deptno;  [

左外连接,更ok

③对查询进行优化,要尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null 最好不要给数据库留NULL,尽可能的使用NOT NULL填充数据库.备注、描述、评论之类的可以设置为NULL,其他的,最好不要使用

NULL。不要以为NULL不需要空间,比如:char(100)型,在字段建立时,空间就固定了,不管是否插入值(NULL也包含在内),都是占用100个字符的空间的,如果是varchar这样的变长字段,null不占用空间。可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

select id from t where num = 0

存储引擎

myisam

如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用

myisam存储引擎比如bbs中的 发帖表,回复表.

innodb

对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表.

memory

比如我们数据变化频繁,不需要入库,同时又频繁的查询和修改,我们考虑使用memory,速度极快.(如果mysql重启的话,数据就不存在了)

MyISAM和INNODB的区别

1.事务安全(MyISAM不支持事务,INNODB支持事务)

2.查询和添加速度(MyISAM批量插入速度快)

3.支持全文索引(MyISAM支持全文索引,INNODB不支持全文索引)

4.锁机制(MyISAM时表锁,innodb是行锁)

5.外键MyISAM不支持外键,INNODB支持外键. (在PHP开发中,通常不设置外键,通常是在程序中保证数据的一致)

Myisam注意事项

如果你的数据库的存储引擎是myisam,请一定记住要定时进行碎片整理

看下面的例子

-- 新建一张表 设置存储引擎为myisamcreate table test100(id int unsigned ,name varchar(32))engine=myisam

去我们mysql的配置文件所指向的内存数据

e7db7b3ed677b88ca16410860ff6d023.png

可以看到这时候的大小是0KB,接着我们新添加两条数据

-- 新添加两条数据insert into test100 values(1,'aaaaa');insert into test100 values(2,'bbbb');

再去看看大小

58230cbd621f8f0505601b842f89fc4a.png

这时候变成了1KB

-- 再删除test100的数据delete from test100;

但是再去刚才的那个文件看下 其实文件大小并没有改变。也就是说数据并没有完全删除掉,这样就比较耗内存了

73b24da6ed69daed12d07d28e6846fbf.png

所以 我们需要定时对碎片进行整理

-- 整理碎片optimize table test100;

再去看看文件的大小

b5e2df83388b71aea75e8f4c815e8cf5.png

发现已经删除了。

备份sql文件

cmd控制台:在环境变量中配置mysql环境变量

mysqldump –u -账号 –密码 数据库[表名1 表名2..] >文件路径

案例mysqldump -u - root -proot test  >d:\temp.sql

1ee3856a4d0a8a1005ff76b5d968201f.png

660fc333652dcf0e3d2b1f3a03e7be52.png

可以看到已经备份了

至于还原的话,写一个bat文件即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值