Python进阶----索引原理,mysql常见的索引,索引的使用,索引的优化,不能命中索引的情况,explain执行计划,慢查询和慢日志, 多表联查优化
一丶索引原理
什么是索引:
索引在MySQL中也称作'键',是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发更重要.
索引优化是对查询性能优化的手段,索引能够轻易将查询性能提高好几个量级.如果没有索引,则需要逐页去查询,可想而知效率就会低下
是否对索引产生误解:
索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响,要找到一个平衡点,这对应用程序的性能至关重要。一些开发人员总是在事后才想起添加索引
索引原理:
通过不断地缩小想要获取数据的范围来少选出最终想要的结果,同时把随机的事件变成顺序的事件
磁盘IO与预读:
当一次IO时,不光把当前磁盘地址的数据读出,而且还把相邻的数据也读到内存缓冲区内.
当计算机再次访问一个地址的数据时,与其相邻的数据也会很快被访问到,每次IO读取的数据成为一页page,一页的数据量(block块)一般为4K或是8K,与操作系统设置有关,这个理论对于索引的数据结构设计非常有帮助
二丶索引的数据结构
数据结构的意义:
每次查询数据时把磁盘IO次数控制在一个很小的数量级
树:
树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合.
特点:
1.每个节点有0个或多个子节点;
2.没有父节点的节点成为根节点
3.每一个非根节点有且只有一个父节点;
4.除了根节点外,每个子节点可以分为多个不相交的子树(子节点)
如图下图: