存储引擎
比如现在有一张表employees,我们可以通过show create table employees;来查看创建表的时候的引擎。
同样,我们也可以在建表的时候,自己定义Engine:
create table [name](
field1 type
field2 type
)engine=InnoDB;
使用show engines;查看有哪些引擎
InnoDB引擎
InnoDB特点
- DML操作遵循ACID模型,支持事务
- 行级锁,提高并发访问性能
- 支持外键 Foerign Key约束,保证数据的完整性和正确性
InnoDB文件
xxx.ibd innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
InnoDB存储结构
MyISAM引擎
Memory引擎
三种引擎的比较
索引
创建索引
create [UNIQUE | FULLTEXT] INDEX index_name on table_name(field,...);
查看索引
show INDEX from table_name;
删除索引
drop index index_name on table_name;
实操
在创建联合索引的时候,按照最左匹配原则进行创建,也就是使用最多的放在左边。
SQL性能优化
使用show global status like 'Com_______';查看最多调用的几样内容。(七个下划线)
索引的使用(重点)
假设现在有一张数据量为10w的表,我们对这个表进行查询操作。
可以看到访问时间高达11s
我们也可以查询普通数据
在数据量非常大的时候,如果仅仅采用普通查询的方式,需要进行比较的次数是非常多的,而且耗时也相当高。
我们现在对sn这个字段创建索引,然后通过这个索引进行操作。
实操
首先创建索引:create index idx_sn on tb_sku(sn);
然后再通过 select * from tb_sku where sn='1000000003145001';查找这条数据
花费1min11.2s建立索引。
花费0.01s查询到结果,对比上面不使用索引花费22s查询到结果,这个速度提升了几个数量级。
使用索引不需要额外的语句,就使用普通的查询语句就行。