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)性能损失,对表增加、更新、删除数据时,会同时修改索引