mysql数据库之MyISAM与InnoDB
看你的mysql现在提供了什么引擎,执行的命令:show engines;
看你mysql当前默认的存储引擎,执行的命令:show variables like ‘%storage_engines%’;
MyISAM与InnoDB的的区别:
MyISAM:
1、不支持外键
2、不支持事务
3、支持表锁,即使操作一条记录也会锁住整个表,不适合高并发操作
4、只支持缓存索引,不缓存真实数据
5、关注点:节省资源、消耗少、简单的业务
InnoDB:
1、支持外键
2、支持事务
2、支持行锁,操作时只锁某一行,不对其他行有影响,适合高并发操作。
3不仅支持缓存索引,还缓存真实数据,对内存要求较高,而且内存的大小对性能有决定性影响
3、关注点:并发写、事务、更大的资源
复杂查询:
#查询两张表:admin_group、admin_log
SELECT * FROM admin_group g
INNER JOIN admin_log l
ON g.`id`=l.`id`
执行之后:
索引:
首先自己准备两张表,分别是:myschool、mystudent
执行sql语句会出现:Empty set (0.00 sec)
原因:
其实就是提示你实体表为空,说的是你的数据库或表里数据为空,你添加上数据就可以了
使用索引只需要在sql语句前面加explain 关键字即可!
执行语句:Explain select * from myschool s inner join mystudent t on s.id=t.id;
Explain 性能分析各字段:
总结:
id如果相同,可以认为是一组,从上往下顺序执行:
在所有的组中,id值越大,优先级就越高,越先执行