关系型数据库通过索引提升查询效率的原理

主流的关系型数据库有Oracle、MySQL等,以MySQL为例,创建、查看、删除索引。

创建索引的三种方式
创建表的时候创建索引
CREATE TABLE student(
		stu_id int(10),
    	name varchar(20),
    	course varchar(50),
    	score float,
        DESCription varchar(100),
        INDEX(stu_id),                         #创建普通索引
        UNIQUE INDEX unique_id(stu_id ASC),    #创建唯一性索引
        FULLTEXT INDEX fulltext_name(name),    #创建全文索引
        INDEX single_course(course(10)),       #创建单列索引
        INDEX multi(stu_id, name(20))          #创建多列索引
              );
使用CREATE INDEX创建
CREATE INDEX indexName ON tableName (columnName(length));
使用ALTER语句创建
ALTER TABLE tableName ADD INDEX indexName(columnName);
查看索引
SHOW INDEX FROM tableName;
删除索引
ALTER TABLE t_user_action_log DROP INDEX index_ip_addr;

所有MySQL列类型都可以被索引,索引有两种存储类型:B+树和Hash。其中B+树为INNODB和MYISAM存储引擎的默认索引存储类型。

  • B+树是一种二叉查找树(根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值,这一规则适用于二叉查找树中的每一个节点。),通过根节点进行二叉查找可以快速查询。
  • 在每个叶子节点保存其下一个叶子节点的指针,这样当指定范围范围查询时,先从根节点根据范围的左值找到其叶子节点,之后通过向后遍历叶子节点即可找到对应范围右值,这样可以加速范围查询、排序、分组等数据库查询动作。
  • MySQL等数据库引擎在实际实现B+树索引的时候,针对磁盘读写做了优化。如果没有索引,需要通过全表扫描查找数据,导致产生大量磁盘IO。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值