数据结构
索引定义:索引(Index)是帮助MySQL高效获取数据的数据结构。其中MySQL使用的数据结构为 B+Tree。
为什么我们添加完索引后查询速度为变快?
传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql需要将表的数据从头到尾遍历一遍。在我们添加完索引之后,mysql一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历(折半查找大幅查询效率),找到相应的键从而获取数据。
- 在哪些字段使用索引?
- 较频繁的作为查询条件字段应该创建索引
- 唯一性太差的字段不适合创建索引,尽管频繁作为查询条件,例如gender性别字段
- 更新非常频繁的字段不适合作为索引
- 不会出现在where子句中的字段不该创建索引
各种数据结构的优缺点比较
- 数组: 优点:插入快,如果知道了下标可以非常快速的存取数据 缺点:查找,删除慢,大小固定
- 有序数组 优点:比无序数组查找快 缺点:删除,插入慢,大小固定
- 栈 优点:提供后进先出方式的存取 缺点:存取其他项很慢
- 队列 优点:提供先进先出方式的存取 缺点:存取其他项很慢
- 链表 优点:插入快,删除快 缺点:查找慢
- 二叉树 优点:如果树保持平衡,查找,插入,删除都快 缺点:删除算法复杂
- 红黑树 优点:查找,插入,删除都快,树总是平衡的 缺点:算法复杂
- 哈希表 优点:如果关键字已知则存取,插入极快 缺点:删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分
- 堆 优点:插入,删除快,对最大数据项的存取很快 缺点:对其他数据项存取慢
- 图 优点:对现实世界建模 缺点:有些算法慢且复杂
算法
详情链接:传送门
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 向阳榆木!
评论