事务和索引
1. 事务
? 将一组SQL语句放在同一彼此内执行。
执行原则
- 原子性:要么全部完成,要么全不完成,其中一句错误事务回滚到开始前的状态。
- 一致性:不论给定的并发事务有多少,事务必须保持与系统处于一致的状态。
- 隔离性:使同一时间只运行一个并发事务
- 持久性:事务执行完成,不回滚。
语法
set autocommit = 0;
start transaction;
update ...
update ...
insert ...
commit;
2.索引
作用
- 提高查询速度
- 确保数据的唯一性
- 可以加速表与表之间的连接,实现表与表之间的参照完整性
- 使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
- 全文检索字段进行搜索优化
分类
-
主键索引(Primary Key):某一个属性组(一个或多个属性)能唯一标识一条记录 -
唯一索引(unique):避免同一个表中某数据列中的值重复(一个或多个) -
常规索引(index):快随定位特定数据,index和key关键字都可以设置;应加在查询找条件的字段 -
全文索引(Full Text):快随定位特定数据,只有在MyISAM数组引擎上才能使用,只能在char,varchar,text类型上使用全文索引。
create table studeng(
sid int unsigned not null auto_increment,
xing char(10) not null default '',
ming char(10) not null default '',
sno char(10) not null default '',
sinfo text,
primary key (sid), #主键索引
unique index unique_sno (sno), #唯一索引
index index_name (xing,ming), #常规索引
fulltext index full_sinfo (sinfo)#全文索引
) engine = myisam charset = utf8;
创建索引注意事项
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表建议不要加索引
- 索引一般应加在查找条件的字段
三大范式
- 第一范式:每列都是不可再分的最小数据单元
- 第二范式:每一张只描述一件事情或一个实体
- 第三范式:数据表中的每一列数据都和主键直接相关,而不能间接相关。
|