一、索引
索引的原理
1、没有索引会全表扫描,从而查找速度会很慢
2、使用索引会形成一个索引的数据结构,比如二叉树
3、索引的代价
磁盘占用
对 dml(update、delete、insert)语句的效率影响
索引的类型
1、主键索引,主键自动的为主索引(类型Primary key)
2、唯一索引(UNIQUE)
3、普通索引(INDEX)
4、全文索引(FULLTEXT),一般开发不适用mysql自带的全文索引,而是使用:全文搜索Solr和ElasticSearch(ES)0
索引使用
添加索引
CREATE [UNIQUE] INDEX index_name ON table_name (col_name[(length)]) [ASC| DESC],..);
添加主键索引
ALTER TABLE 表名 ADD PRIMARY KEY(列名,.....);
删除索引
DROP INDEX index_name ON table_name;
删除主键索引
ALTER TABLE table_name DROP PRIMARY KEY;
查找索引
SHOW INDEX FROM table_name;
SHOW INDEXES FROM table_name;
SHOW KEYS FROM table_name;
DESC table_name;
哪些列上适合使用索引
1、较频繁的作为查询条件字段应该创建索引
2、唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
3、更新非常频繁的字段不适合创建索引
4、不会出现在WHERE子句中字段不该创建索引
二、MySQL事务
什么是事务
事务用于保存数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。如:转账就要用事务来处理,用以保证数据的一致性
事务和锁
1、当执行事务操作时(dml语句),mysql会在表上加锁,防止其它用户改表的数据,这对用户来说非常重要
2、mysql数据库控制台事务的几个重要操作
1、开始一个事务:START TRANSACTION
2、设置保存点:SAVEPOINT
3、回退事务:ROLLBACK TO
4、回退全部事务:ROLLBACK
5、提交事务,所有的操作生效,不能回退:COMMIT