索引(是帮助mysql高效获取数据的排好序的数据结构)
都是存在磁盘上
mysql索引采取的是b+树
索引数据结构:二叉树 红黑树(自平衡的二叉搜索树) hash表 btree
二叉树缺点:单边自增长时候,索引几乎没用,例如自增id时候,都是在右下角添加子树,查询都需要全表查询
红黑树缺点:在二叉树基础上优化,会自动选取红黑点,不会一直单边存住,但是数据量越大的时候 树的高度越高 树的高度不可控 查询子节点同样会很慢
其次索引存在于磁盘,读取磁盘次数过多 读取浪费太多;但是hashmap可以使用红黑树 原因是hashmap存在于内存 读取非常快 不存在读取浪费
索引还有一个数据结构是哈希
但是存在很大问题:
没办法使用范围查询
不能使用联合索引里面的部分查找
在查询条件不会变 没有部分查询 也没有范围查询的时候索引使用哈希 是最快的