索引概述
-
在数据库中,索引使数据库程序无需对整个表进行扫描,就可以在其中找到所有数据,数据库的索引是某个表中一列或者若干列值的集合,以及物理表示这些值的数据也的逻辑指针清单
-
索引的作用
-
1、设置了合适的索引之后,数据库利用各种快速的定位技术,能够加快查询速率,特别是当表很大时,或者查询涉及到多个表时,使用索引可以使查询加快成千倍
-
2、可以降低数据库的IO成本(减少磁盘压力),并且索引可还可以降低数据库的排序成本
-
3、通过创建唯一索引保证数据表数据的唯一性,可以加快表与表之间的连接
-
4、在使用分组和排序时,可大大减少分组和排序时间
-
索引的分类
-
1、普通索引
-
这是最基本的索引类型,而且没有唯一性之类的限制
-
-
2、唯一性索引
-
与普通索引基本相同,区别在于:索引列的所有值都只能出现一次,即必须唯一,但可为空
-
-
3、主键
-
是一种特殊的唯一索引,必须指定为“PRIMARY KEY”,具有唯一性的同时不能为空
-
-
4、全文索引
-
MySQL从3.23.23版开始支持全文索引和全文检索,在MySQL中,全文索引的类型为PULLTEXT,全文索引可以在VARCHAR或者TEXT类型的列上创建,贴吧的文本内容,和一些小型的网站网页内容,存放在数据库中即为全文索引模式
-
-
5、单列索引与多列索引
-
索引可以是单列上创建的索引,也可以是多列上创建的索引
-
创建索引的原则依据
-
1、表的主键、外键必须有索引
-
2、数量超过300行的表应该有索引
-
3、经常与其他表进行连接的表,在连接字段上应该建立索引
-
4、唯一性太差的字段不适合建立索引
-
5、更新太频繁的字段不适合创建索引
-
6、经常出现在where字句中的字段,特别是大表的字段,应该建立索引
-
7、索引应该建在选择性高的字段上
-
8、索引应该建立在小字段上,对于大的文本字段甚至超长字段,不要建立索引
创建、查看、删除索引的方法
事务的概念
事务是一种机制、一个操作序列、包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或者撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。事务适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等。通过事务的完整性以保证数据的一致性。
事务的ACID特点
事务具有四个属性:ACID
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
永久性(Durability)
1、原子性
事务是一个完整的操作,事务的各元素是不可分的(原子的),事务的所有元素必须作为一个整体提交或回滚,如果事务中的任何元素失败,则整个事务将失败
2、一致性
当事务完成时,数据必须处于一致状态:在事务开始之前,数据库汇总存储的数据处于一致状态;在正在进行的事务中,数据可能处于不一致的状态;当事务完成时,数据必须再次回到已知的一致状态
3、隔离性
对数据进行修改的所有并发事务时彼此隔离的,这表明事务必须是独立的,它不应该以任何方式依赖于或影响其他事务,修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据
4、永久性
事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的,一旦事务被提交,事务的效果会被永久的保留在数据库中。
事务的操作
默认情况下MySQL的事务是自动提交的,当sql语句提交事务便自动提交
手动对事务进行控制的方法
使用set设置事务处理方式
事务处理命令控制
begin 开始一个事务
commit 提交一个事务
rillback 回滚一个事务
事务的操作必须基于lnnodb存储引擎
实验示例(开始事务、提交事务)
使用set命令进行控制
set autocommit=0 禁止自动提交