当前位置 : 主页 > 网络编程 > 其它编程 >

数据库技术:MySql数据库学习(三)索引

来源:互联网 收集:自由互联 发布时间:2023-07-02
一、索引的种类二、索引的实现原理三、使用索引的 一、索引的种类 mysql索引主要分为两大类:单列索引、组合索引 单列索引: 一个索引只包含一个列,一个表可以有多个单列索引。
一、索引的种类二、索引的实现原理三、使用索引的
一、索引的种类

mysql索引主要分为两大类:单列索引、组合索引 单列索引: 一个索引只包含一个列,一个表可以有多个单列索引。 其中单列索引又可以分为:主键索引、唯一索引、普通索引 普通索引: 最基本的索引,值可以不唯一,允许有空值。 唯一索引: 唯一所以要求所有列的值是唯一的,允许有空值。 主键索引: 所有列的值是唯一的,不允许有空值。 组合索引: 一个索引可以包含两个或者两个以上的列。

二、索引的实现原理

索引的底层使用的是B+树的数据结构; 为何不用其他数据结构? 1、使用二叉树,如果使用自增索引,会导致二叉树不平衡,从而使数据结构类似于链表,每次查找数据都要全盘扫描,使效率降低; 2、使用红黑树(即二叉平衡树),会导致树的高度特别高,查询效率也会降低; 3、B+树是B树的升级版,使树的高度变低; B树: 把节点搂到内存里,然后挨个节点比对;先从跟节点开始,例如 查找49,15-56之间中间有指针,然后向下寻找; MySql数据库学习(三)索引MySql数据库学习(三)索引 B+树: 与B树的不同的是,只有子节点有date(索引文件行所在磁盘指针),且子节点包含所有数据,每个子节点之间有双向的指针(图片画的单向的)。 MySql数据库学习(三)索引MySql数据库学习(三)索引

  • 聚集索引底层数据结构: 子节点存储了完整的数据结构; MySql数据库学习(三)索引MySql数据库学习(三)索引

使用整型比较大小比较快,所以推荐使用整型;整型存储空间小;

  • 非聚集索引底层数据结构: 子节点只存储指针,指向索引的行; MySql数据库学习(三)索引MySql数据库学习(三)索引
三、创建索引注意事项

1、最好使用联合索引; 2、如果创建表的时候不创建索引,DB会自动找一个自增不重复的字段当索引; 3、索引最好是自增的整型; 4、索引并不是越多越好,索引会提高数据访问速度,但增加了删除、插入、更新的时间。 5、索引创建时,应该考虑经常作为查询条件或者要求排序的字段作为索引。 6、经常出现在关键字order by、group by、distinct后面的字段,建立索引; 7、在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构;

四、如何创建索引

普通索引创建格式:

CREATE INDEX IndexName ON `TableName`(`字段名`(length)) 或者 ALTER TABLE TableName ADD INDEX IndexName(`字段名`(length))

例如:

CREATE INDEX account_Index ON `pay_accounting`(`account`); ALTER TABLE pay_accounting ADD INDEX account_Index(`account`)

主键索引:

CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name));

唯一索引:

CREATE UNIQUE INDEX IndexName ON `TableName`(`字段名`(length));

或者 ALTER TABLE TableName ADD UNIQUE (column_list) 例如:

CREATE UNIQUE INDEX account_UNIQUE_Index ON `pay_accounting`(`account`);

组合索引:

CREATE INDEX IndexName On `TableName`(`字段名`(length),`字段名`(length),...);

例如:

CREATE INDEX nickname_account_createdTime_Index ON `award`(`nickname`, `account`, `created_time`);

需要了解更多数据库技术:MySql数据库学习(三)索引,都可以关注数据库技术分享栏目—编程笔记

上一篇:测试用例之优先级排序
下一篇:没有了
网友评论