我用对了这些场景下的索引,技术总监夸我棒
前言 生产上为了高效地查询数据库中的数据,我们常常会给表中的字段添加索引,大家是否有考虑过如何添加索引才能使索引更高效,考虑如下问题 添加的索引是越多越好吗 为啥有时候明明添加了索引却不生效 索引有哪些类型 如何评判一个索引设计的好坏 看了本文相信你会对索引的原理有更清晰的认识。本文将会从以下几个方面来讲述索引的相关知识,相信大家耐心看了之后肯定有收获,码字不易,别忘了「在看」,「转发」哦。 什么是索引,索引的作用 索引的种类 高性能索引策略 索引设计准则:三星索引 什么是索引,索引的作用 当我们要在新华字典里查某个字(如「先」)具体含义的时候,通常都会拿起一本新华字典来查,你可以先从头到尾查询每一页是否有「先」这个字,这样做(对应数据库中的全表扫描)确实能找到,但效率无疑是非常低下的,更高效的方相信大家也都知道,就是在首页的索引里先查找「先」对应的页数,然后直接跳到相应的页面查找,这样查询时候大大减少了,可以为是 O(1)。 数据库中的索引也是类似的,通过索引定位到要读取的页,大大减少了需要扫描的行数,能极大的提升效率,简而言之,索引主要有以下几个作用 即上述所说,索引能极大地减少扫描行数 索引可以帮助服务器避免排序和临时表 索引可以将随机 IO 变成顺序 IO 第一点上文已经解释了,我们来看下第二点和第三点 先来看第二点,假设我们不用索引,试想运行如下语句 SELECT *