SQL数据库索引的学习

索引怎样实现

在mysql数据库中执行查找语句时

CREATE TABLE T1(id INT);
INSERT INTO T1 VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
SELECT *FROM T1 WHERE id=9;

机器会进行全表扫描,将要查找的数据与表中的每一条数据进行对比,这使得查找效率大幅下降;

        而当我们创建一个索引

CREATE INDEX T1_index ON T1(id);

在机器底层会将表数据形成一个二叉树结构

索引的意义

当查询语句被执行时数据被有规律的存放在一颗二叉树中,免去了重复的查询步骤;

例如当以传统的方法 

SELECT *FROM T1 WHERE id=3;

T1表中所有的id都会与3进行比较相当于执行10次;

而有了索引在执行,只需要与5,4,3进行比较即可得到答案,大大得提高了查找的效率;

当数据库中拥有海量的数据时,二者的差距会明显增大。

索引的副作用

1、使用索引会生成索引文件占用硬盘空间

2、因为索引改变了数据的存储结构,所有当进行其他的操作时(例如:insert、delete、update等),反而会降低效率,因为这种操作破坏了Tree的结构,将重新进行维护,虽说索引会导致dml语句效率的下降,但是在日常使用中select语句的出现频率远超其他语句,为了提升select的效率,索引是非常有必要的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zen1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值