索引、触发器、存储过程、连接、死锁机制、数据库的恢复、备份、union、MySQL引擎
索引
- 索引是什么?
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位的。数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。
唯一索引:是不允许其中任何两行具有相同索引值的索引。
主键索引:数据库表经常有一列或多列组合,其值唯一标识表中的每一行,该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。
聚集索引:在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。,聚集索引比非聚集索引提供更快的数据访问速度。举例:聚集索引:字典中的默认按字母顺序排序;非聚集索引:字典中按偏旁部首定位某个生僻字。
提示:尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键或唯一约束。
- 索引的创建方法
CREATE INDEX mytable_categoryid ON mytable (category_id);
CREATE INDEX mytable_categoryid_userid ON mytable(category_id,user_id);
只要数据库认为可以使用某个已经创建的索引,索引就会自动运用。
create index idx_emp_ename on EMP(ename);
select *from EMP where ename='SMITH';
- 索引的内部原理
B+tree 是一个n叉树,每个节点有多个叶子节点,一颗B+树包含根节点,内部节点,叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上叶子节点的节点。所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
由于B+tree的性质, 它通常被用于数据库和操作系统的文件系统中。NTFS, ReiserFS, NSS, XFS, JFS, ReFS 和BFS等文件系统都在使用B+树作为元数据索引,
因为B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度(B+ 树元素自底向上插入)。