avatar

算法与数据结构

数据结构

  1. 索引定义:索引(Index)是帮助MySQL高效获取数据的数据结构。其中MySQL使用的数据结构为 B+Tree。

  2. 为什么我们添加完索引后查询速度为变快?

传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql需要将表的数据从头到尾遍历一遍。在我们添加完索引之后,mysql一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历(折半查找大幅查询效率),找到相应的键从而获取数据。

  1. 在哪些字段使用索引?
    1. 较频繁的作为查询条件字段应该创建索引
    2. 唯一性太差的字段不适合创建索引,尽管频繁作为查询条件,例如gender性别字段
    3. 更新非常频繁的字段不适合作为索引
    4. 不会出现在where子句中的字段不该创建索引

各种数据结构的优缺点比较

  1. 数组: 优点:插入快,如果知道了下标可以非常快速的存取数据 缺点:查找,删除慢,大小固定
  2. 有序数组 优点:比无序数组查找快 缺点:删除,插入慢,大小固定
  3. 栈 优点:提供后进先出方式的存取 缺点:存取其他项很慢
  4. 队列 优点:提供先进先出方式的存取 缺点:存取其他项很慢
  5. 链表 优点:插入快,删除快 缺点:查找慢
  6. 二叉树 优点:如果树保持平衡,查找,插入,删除都快 缺点:删除算法复杂
  7. 红黑树 优点:查找,插入,删除都快,树总是平衡的 缺点:算法复杂
  8. 哈希表 优点:如果关键字已知则存取,插入极快 缺点:删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分
  9. 堆 优点:插入,删除快,对最大数据项的存取很快 缺点:对其他数据项存取慢
  10. 图 优点:对现实世界建模 缺点:有些算法慢且复杂

算法

详情链接:传送门

文章作者: PanXiaoKang
文章链接: http://example.com/2020/05/14/%E7%AE%97%E6%B3%95%E4%B8%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 向阳榆木
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论