mysql索引与事务

一、索引:一种特殊的文件,包含对数据表中所有记录的引用指针。
1、作用:加快对表中记录的查找或排序。
(1)设置何时索引后,数据库利用各种快速定位技术,可以大大加快数据查询速度,是创建索引主要原因。
(2)当表很大,或查询涉及多个表时,使用索引可使查询速度加快成千倍。
(3)可以降低数据库的IO成本,并且索引还可降低数据库的排序成本。
(4)通过创建唯一性索引,可以保证数据库中每行数据的唯一性。
(5)可以加快表和表之间的连接。
(6)在使用分组和排序子句进行数据查询时,可以显著减少查询中分组和排序的时间。
2、分类:
普通索引:最基本的索引类型
唯一性索引:索引列的值必须唯一
主键索引:特殊的唯一性索引,位primary key
全文索引(fulltext):可在char、varchar或text类型上创建
单列索引和多列索引:在单列或多列上创建的索引
3、创建索引的原则:
(1)表的主键、外键必须有索引。
(2)数据量超过300行的表应该有索引。
(3)经常与其他表进行连接的表,在连接字段上应该建立索引。
(4)唯一性太差的字段不适合建立索引。
(5)更新太频繁的字段不适合建立索引。
(6)经常出现在where子句中的字段,特别是大表的字段,应该建立索引
(7)索引应建在选择性高的字段上
(8)索引应建在小字段上,大的文本字段甚至超长字段,不要建立索引。
4、创建索引:
创建普通索引:Create index 索引名 on tablename(字段名);
例:create index salary on salary(薪资); 后一个salary是表的名字
创建唯一性索引:create unique index 索引名 on tablename(字段名);
创建主键索引:create table (tablename (…),primary key(列的列表));
Alter table tablename add primary key(列的列表);
创建全文索引:create table 表名(字段名 text,fulltext(字段名)) engine=myisam;
Alter table 表名 add fulltext(字段名);
创建多列索引:Create index 索引名 on tablename 数据表(字段名1,字段名2);
删除索引:drop index index_name on table_name;
Alter table table_name drop index index_name;
Alter table table_name drop primary key;
当删除列后,该列对应索引同时删除
查看索引:show index/keys from 表名 后面加“\G”可以竖向显示索引信息
索引详细信息:table 表名 non_unique 唯一性,0唯一,1非唯一 key_name 索引名
Seq_in_index 索引列序列号,从1开始 column_name 列名
二、事务(transaction):是指作为单个逻辑工作单元执行的一系列操作,要么完整执行,要么完整不执行。如果出错,回到第一步操作前状态。
1、慨念:事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。
2、特点:ACID特性
原子性(automicity):事务是一个完整的操作,各元素是不可分的,即原子的。
一致性(consistency):事务开始之前和完成之后,数据必须处于一致状态。
隔离性(isolation):对数据进行修改的所有并发事务都是彼此隔离带,这表名事务必须是独立的,它不应以任何形式依赖于或影响其他事务。
持久性(durability):指不管系统是否发生故障,事务处理的结果都是永久的。
3、mysql操作事务:默认自动提交
4、事务命令控制事务
Begin:表示开始一个事务
Commit:表示提交一个事务
Rollback:表示回滚一个事务
Savepoint 1:定义回滚点“1”
Roollback to savepoint 1:回滚到回滚点1
5、set设置控制事务
Set autocommit=0;禁止自动提交
Set autocommit=1;开启自动提交

遇到的问题:
1、删除主键索引命令报错
如果一个主键是自增长的,不能直接删除该列的主键索引,应当先取消自增长,再删除主键特性
Alter table salaries modify id int(255) not null;就把salaries表id字段的自增属性覆盖了
Alter table salaries drop primary key;删除主键成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值