您的位置:首页 > 数据库 > MySQL

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数据表不支持全文索引。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: