数据库整理2

MYSQL
插件式存储引擎的数据库

存储引擎:   存储方式 [磁盘]
1.MyISAM
	不支持外键,不支持事务
	支持全文索引,底层用B+树;
	支持表锁;
2.InnoDB
	支持外键,支持事务;
	不支持全文索引,底层用B+树;
	支持行锁;
3.MEMORY	
	数据存在内存上,读写效率高,适合存储临时表数据;/*不考虑数据安全*/[从几个表中拼接出来的临时表];
	支持索引,底层哈希索引;
	varchar  ==  char;
	不支持text、BOLB类型字段;
	     [文本] [图片]  太大占内存空间;
4.ARCHIVE
	归档存储引擎    1:10 的默认比例进行压缩后存储;
	适用数据量大、查询少的数据。
	日志数据: 记录整个执行过程中的每一个操作,无论正常异常操作。
	//只支持 insert select 操作;


//索引
1.数据结构
2.全文索引 索引的一种方式,根据该索引建立字段的属性划分;

//事务
一组SQL语句的集合
四个原则
A 原子性 要么全部执行成功,要么全部执行失败;
C 一致性 保证完整性约束;
I 隔离性 消除事物之间的相互影响;
D 持久性 事务执行的结果在磁盘上永久保存;
//锁机制
表锁 锁定整张表
行锁 锁定整行

1.MyISAM  数据和索引分离开来设计、   0非聚集索引
	B+树;   (搜索树、多路排序树)
			 <叶结点放数据地址>
	// create index index_1 on student(id);
	
	创建表更改存储引擎
	create table student
	(
		id int primary key,
		name varchar(15) not null,
		age int default 18
	)engine = MyISAM;
	
	explain select * from stu where id = 6;   √ 使用索引
	explain select * from stu where name = "lisi";  ×
	
2.InnoDB  索引当场数据一部分存储、   0聚集索引 数据相对集中
	B+树;
		<叶结点放数据>
	
	数据的存储依赖索引;但
		create table stu(id,name,sex,age);
		insert into ()()()();  默认为InnoDB,但没有设置索引,仍可以插入数据成功;
		系统创建索引的规则:
			1.查询是否存在主键,存在即创建主键索引;
			2.查询是否存在唯一键,存在即创建唯一索引;
			3.如果上述都没有,系统添加隐藏字段(6个字节)创建索引;
					隐藏字段看不见如何插入数据?auto_increment 添加数据会自动+1;
	
	
	在InnoDB中存储数据的索引主索引,主索引不允许关键字重复;
		辅助索引是在叶结点不存储数据,存储主索引的索引值; 辅助索引查询 2 次,先查询辅助索引,然后找到主索引,再查找相对应的数据;

索引的优化; <空间换时间>

1.那种情况建立索引
	1)经常被查询的字段
	2)用于主键字段
	3)用于连接的字段 比如 学生信息表 成绩表 的 id 字段,提供多表查询的查询效率
	4)范围查询
	5)经常用于排序处理的字段
	6)经常用来 where 过滤的字段
	
2.那种情况不应该建立索引
	1)不经常用于查询的字段
	2)数值较少的字段   比如 性别字段
	3)数值较多,数据量大的字段  比如 BOLB类型或者text类型字段
	4)修改操作大于查询操作的字段

索引的分类:

1.普通索引 基于普通字段创建   <mysql原理>
	create index index_name on table_name(field_name);
	alter table tablename add index index_name on (field_name);
	create table tablename(index index_name(filed_name));
2.唯一索引

3.全文索引  消耗时间消耗硬盘
		InnoDB不支持,
4.单列索引多列索引

5.组合索引
		多个字段合起来构成一个索引;

索引的注意事项:
1)索引项不会包含NULL值;
2)使用短索引;
3)索引列排序;
4)like操作
第一个字母是通匹,不会用到索引
5)不要在索引项上进行计算;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值