索引

1.为什么需要索引

    假设要在student表查询一个student:select * from student where name='sandy'

    如果没有索引,执行该查询时,需要执行全表扫描:数据库不得不在student中查询每一行并确定该名字是不是sandy。在确定一个结果之后,不能停止查询,因为还有可能有其他值,一直执行查询到最后一条,这就是全表扫描

2.索引的作用

    索引的终极作用是通过缩小一个表的查询行或列来提示查询效率。如果经常用到的字段进行查询,那么该字段需要加上索引

3.什么是索引

    索引是一种数据结构。是存储的表的一种特定的数据结构,最常见的是B-Tree,索引创建在表的列上。可以将数据库索引类比为书的目录,数据库索引并不存储该列字段的值,数据库索引存储了指向该列的指针。

4.常见的索引

    B-Tree、哈希索引、

    B-Tree:最常用的索引数据结构。特点是:时间复杂度低,存储在B-Tree中的数据是有序的,查询、删除、插入操作可以在对数时间内完成。

    哈希索引:在寻找值时,哈希索引效率高。在寻找值是否相等时,使用哈希索引效率高,因为哈希表基本是键值对。哈希索引将列的值哈希化作为键值,实际值作为value值。如select * from student where  name ='sandy' 就是 sandy ==> 0x...位置,得到相应行在内存中的引用,直接取该位置的值,明显比全表扫码快得多。

5.使用索引的缺点

    1)索引会占用内存,表越大,占用的内存越大,2)性能损失,对表增加、更新、删除数据时,会同时修改索引



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值