5.1 索引基础

2019-08-22  本文已影响0人  愤愤的有痣青年

索引是在数据库中,对某一字段或者某几个组合字段按照一定的存储结构进行存储的功能,其能增加对索引字段的查找,mysql的innodb数据库引擎默认使用的是B+Tree存储结构,或者直接叫B树.

由于B+Tree树的上述特点4,其可以从某个节点处开始,顺序读取出所有的值,因此其很适合查找一个范围内的数据.

对于联合索引,例如在person表中有(name, address)联合索引,由于在索引结构里面,每个节点的判断依据是对name+address组合的字符串进行查询,所以在查询时,需要使条件能满足name+address从左到右的部分(最左前缀查找),可以是部分,也可以是全部,以下语句都能使用到索引:

select * from person where name ='pan' and address='jiangsu';
select * from person where name ='pan' and sex='man';
select * from person where name ='pan' and address like 'j%';
select * from person where name like 'p%';
select * from person where name between 1 and 200;
select * from person where address='jiangsu';
select * from person where name like '%p%';

可匹配的类型

索引类型除了B-Tree结构外,还是hash存储,其是将关键字转成一串hash值,然后使用hash散列法存储,此方式优点为不管源数据多大,其索引值大小都是固定的,可以节省内存,查询数据快,但是随着数量增加,哈希值冲突的问题也会增加,这会增加数据库的查询时间,然后就是此方式只能使用= is in条件查询,不支持部分查询.
一般如果需求允许,能使用hash最好,因为其数据快

索引的优点

上一篇下一篇

猜你喜欢

热点阅读