mysql索引
索引分为:一般索引、唯一索引、组合索引、全文索引、主键索引。其中全文索引只能在数据库引擎是myisam时且只能给字段是char,varcahr text上加全文索引。
创建索引的优点
大大加快了数据检索的速度
加快了表与表之间的连接
减少了分组和排序的时间
索引的缺点
占用内存
针对数据较多的表,创建索引时会很耗时
数据更新时,索引要也跟着更新
建立索引的原则
不给重复数据较多的数据加索引
对大数据表添加
索引不在经常更新的字段添加
create index inx_name table(tal) -- 创建一般索引的方式
create unique index inx_name table(tal)-- 创建唯一索引 注意在创建唯一索引时,字段必须有唯一约束
create index inx_name table(tal,di)-- 组合索引 ,在查询时,使用了组合索引的左边字段,索引才会生效
一般主键列系统会自动加上主键索引,所以在争对主键查询的时候速度都较快
mysql视图
视图:view是一个逻辑的存在,在创建成功后,view不占据内存,只有在调用视图时,才会加载数据,在争对视图做更新操作时,主表也会跟着更新,视图是一个简化的主表,在多表查询时可以简化了查询的方式
视图简化了查询的方式,索引提高了查询的速度
create view as select * from emp; -- 视图争对表的查询创立的
mysql事务
事务:一系列操作的逻辑单元,
特点
1.原子性:该事务要么同时成功,要么同时失败
2.一致性:该事务完成时,所有结果一致
3.隔离性:各个事务在执行时,互不干扰
4.持久性:事务完成后,数据持久存在
start transaction -- 开启事务
savepoint p1 -- 设置保存点
commit -- 提交事务
rollback to p1 -- 回滚到p1
rollback; -- 回滚到开始事务前
事务并发时出现的异常
1.丢失更新:一个事务回滚时,覆盖了其他事务更新的数据
2.脏读:A事务在读取B事务的更新数据,且B事务还没有提交,此时A事务就读到了脏数据
3.不可重复度:A事务多次读取一个数据,B事务在A事务读取的过程中修改了该数据,导致A事务的结果不一致
4.幻读:A事务修改了一列数据,B事务在此时添加了一条数据,A事务结束后,发现还有一条数据没有改
隔离级别
1.脏读
2.读已提交数据
3.可重复读
4.串行化