mysql存储引擎及索引
2015-05-07 21:14
423 查看
mysql存储引擎及索引
MySQL是一个开放源码的小型关联式数据库管理系统一、MYSQL一般用的存储引擎 Myisam、InnoDB、Memory1 MyISAMMysql5 0之前的默认数据库引擎
MySQL是一个开放源码的小型关联式数据库管理系统
一、MYSQL一般用的存储引擎 Myisam、InnoDB、Memory
1.MyISAMMysql5.0之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务
2.InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5起成为默认数据库引擎
3.Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失
4.BDB源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
5.Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
6.Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差
7.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
二、索引类别:
1、普通索引
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)
中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列
(如一个整数类型的数据列)来创建索引。
2、唯一索引
普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个
“员工个人资料”数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字
UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引
也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否
已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引
可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速
度,而只是为了避免数据出现重复。
3、主索引
必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。主索引与唯一索引的唯一区别是:前者
在定义时使用的关键字是PRIMARY而不是UNIQUE。
4、外键索引
如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方
式去管理和使用外键约束条件。
5、复合索引
索引可以覆盖多个数据列,如像INDEX(columnA,columnB)索引。这种索引的特点是MySQL可以有选择地使
用一个这样的索引。如果查询操作只需要用到columnA数据列上的一个索引,就可以使用复合索引INDEX
(columnA,columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX(A,
B,C)可以当做A或(A,B)的索引来使用,但不能当做B、C或(B,C)的索引来使用。
InnoDB数据表不支持全文索引。
MySQL是一个开放源码的小型关联式数据库管理系统一、MYSQL一般用的存储引擎 Myisam、InnoDB、Memory1 MyISAMMysql5 0之前的默认数据库引擎
MySQL是一个开放源码的小型关联式数据库管理系统
一、MYSQL一般用的存储引擎 Myisam、InnoDB、Memory
1.MyISAMMysql5.0之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务
2.InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5起成为默认数据库引擎
3.Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失
4.BDB源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
5.Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
6.Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差
7.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
二、索引类别:
1、普通索引
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)
中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列
(如一个整数类型的数据列)来创建索引。
2、唯一索引
普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个
“员工个人资料”数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字
UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引
也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否
已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引
可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速
度,而只是为了避免数据出现重复。
3、主索引
必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。主索引与唯一索引的唯一区别是:前者
在定义时使用的关键字是PRIMARY而不是UNIQUE。
4、外键索引
如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方
式去管理和使用外键约束条件。
5、复合索引
索引可以覆盖多个数据列,如像INDEX(columnA,columnB)索引。这种索引的特点是MySQL可以有选择地使
用一个这样的索引。如果查询操作只需要用到columnA数据列上的一个索引,就可以使用复合索引INDEX
(columnA,columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX(A,
B,C)可以当做A或(A,B)的索引来使用,但不能当做B、C或(B,C)的索引来使用。
InnoDB数据表不支持全文索引。
相关文章推荐
- mysql系列之2------数据类型,索引,键,存储引擎
- Mysql(四)- 存储引擎和事务,备份和恢复,索引,存储过程
- mysql中索引,触发器,事务,存储引擎的理解
- mysql 索引注意事项:表存储引擎的选择
- mysql存储引擎的索引对比
- mysql的存储引擎类型和索引类型
- mysql innodb存储引擎的聚集索引
- mysql 笔记 六 存储引擎 事务 索引 存储过程
- mysql存储引擎与索引
- mysql的优化(表的设计,优化步骤,四种索引,分析慢查询,使用索引的深入解析,存储引擎分析,表的分割,数据库配置)
- 存储引擎和Mysql服务层出现索引信息不一致错误提示
- 02: MySQL 索引类型 、 MySQL 存储引擎
- 做一个合格的程序猿之MYSQL存储引擎INNODB简介--初识索引(三)
- mysql的存储引擎innodb、myisam对插入影响和索引对插入的影响
- MySQL外键及级联删除 && 表的存储引擎与创建索引 && 删除数据库和表
- MySQL技术内幕-InnoDB存储引擎读写笔记(索引概述)
- MySql--存储引擎、索引、视图、DBA命令
- mysql存储引擎、索引及事务
- 【MySQL】MySQL存储引擎以及索引
- mysql中存储引擎为Innodb的索引介绍