IT技术博客大学习 共学习 共进步

MySQL索引背后的数据结构及算法原理

博客园-EricZhang's Technology Blog 2011-07-18 12:45:29 浏览 5,621 次

写在前面的话

在编程领域有一句人尽皆知的法则“程序 = 数据结构 + 算法”,我个人是不太赞同这句话(因为我觉得程序不仅仅是数据结构加算法),但是在日常的学习和工作中我确认深深感受到数据结构和算法的重要性,很多东西,如果你愿意稍稍往深处挖一点,那么扑面而来的一定是各种数据结构和算法知识。例如几乎每个程序员都要打交道的数据库,如果仅仅是用来存个数据、建建表、建建索引、做做增删改查,那么也许觉得数据结构和这东西没什么关系。不过要是哪天心血来潮,想知道的多一点,想研究一下如何优化数据库,那么一定避免不了研究索引的原理,如果想要真正明白索引是怎么工作的,如何合理的使用索引以优化数据库,那么就免不了纠结于一堆数据结构与算法之间了。所以,如果说“程序的核心基础 = 数据结构 + 算法”我是十分赞同的,而一个想成为高手的程序员,一定会去学习程序的核心基础。

好吧,说了这么多,其实我的意思是如果想把数据库索引学个明明白白,就必须将数据结构和算法作为切入点去学习,遗憾的是我目前还没有在网上找到从原理层面去介绍数据库索引的资料(这里仅指在通俗资料领域没找到,不包括学术论文),倒不是说没有高水平的程序员,就只在我们公司范围内能把这一点讲透彻讲明白的数据库大牛也海了去了,只是由于工作的忙碌和个人兴趣原因,这些大牛们没有时间或没有兴趣去写这方面的文章。由于工作的需要,我这个半桶水的程序员这段时间也草草研究一些关于MySQL数据库索引的东西,虽然对这方面的理解相比那些大牛差的太远了,不过这里我还是将这些浅薄的知识总结成文吧。

摘要

数据结构及算法基础

        索引的本质

        B-Tree和B+Tree

        为什么实用B-Tree(B+Tree)

MySQL索引实现

        MyISAM索引实现

        InnoDB索引实现

索引使用策略及优化

        示例数据库

        最左前缀原理与相关优化

        索引选择性与前缀索引

        InnoDB的主键选择与插入优化

后记

参考文献

建议继续学习

  1. 由浅入深探究mysql索引结构原理、性能分析与优化 (阅读 16,121)
  2. 浅谈MySQL索引背后的数据结构及算法 (阅读 11,384)
  3. 由浅入深理解索引的实现(2) (阅读 7,523)
  4. HBase二级索引与Join (阅读 6,861)
  5. 如何建立合适的索引? (阅读 6,663)
  6. mysql查询中利用索引的机制 (阅读 6,582)
  7. InnODB和MyISAM索引统计集合 (阅读 6,083)
  8. Innodb 表和索引结构 (阅读 6,041)
  9. mysql索引浅析 (阅读 5,181)
  10. Fastbit中的bitmap索引算法 (阅读 5,144)