摘要: 覆盖索引是指一个索引包含或者覆盖了所有需要查询的字段的值,不需要根据索引回表查询数据 覆盖索引必须要存储索引列的值,因此MySQL只能用BTree索引做覆盖索引 索引条目通常远小于数据行大小,极大减少数据访问量 因为索引按照顺序存储,所以io密集型查询会比随机从磁盘读取每一行数据的io少的多 inn 阅读全文
posted @ 2022-03-11 16:57 张三丰学Java 阅读(862) 评论(0) 推荐(0) 编辑
摘要: 聚簇索引不是一种索引类型,而是一种数据存储方式 innoDB的聚簇索引是在一个文件中保存了B+树的索引和数据行 当表有聚簇索引的时候,它的行数据是存放在索引的叶子中 innodb中,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复合索引、前缀索引 阅读全文
posted @ 2022-03-11 16:33 张三丰学Java 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 如果希望通过关键字匹配进行查询,就需要基于相似度的查询,而不是精准的数值比较,这时候就需要用到全文索引。 myisam的全文索引是一种特殊的B-Tree索引,一共有2层。 第一层是所有关键字,然后对于每个关键字的第二层,包含的是一组相关的文档指针 全文索引不会索引文档对象的所有词语,而是根据规则过滤 阅读全文
posted @ 2022-03-11 15:04 张三丰学Java 阅读(56) 评论(0) 推荐(0) 编辑
摘要: myisam表支持空间索引,可以用作地理数据存储。 这类索引不需要前缀查询。空间索引会从所有维度来索引数据。查询的时候可以有效的用任意维度来组合查询。 它必须使用MySQL的GIS(地理信息系统)的相关函数来维护数据。 但是MySQL对GIS的支持不完善,所以不常用这个 阅读全文
posted @ 2022-03-11 14:54 张三丰学Java 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 自适应哈希索引是innoDB的一个特殊功能,当它注意到某些索引值被使用的非常频繁的时候,会在内存中基于B+树索引之上再建立一个哈希索引,这样就可以让BTree索引也具有哈希索引的一些优点,比如快速哈希查找。 这是一个完全自动的内部操作,用户无法配置或者控制,但是可以关闭 阅读全文
posted @ 2022-03-11 14:49 张三丰学Java 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 哈希索引基于哈希表实现,只有精准匹配索引所有列的查询才有效。 对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码,哈希码是一个较小的值,并且不同键值计算出的哈希码也不一样。 只有memory引擎显式支持哈希索引,这也是memory引擎的默认索引类型 因为索引自身只需要存储对应的哈希值,所以索引 阅读全文
posted @ 2022-03-11 14:46 张三丰学Java 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 大多数 MySQL 引擎都支持这种索引,但底层的存储引擎可能使用不同的存储结构,例如 NDB 使用 T-Tree,而 InnoDB 使用 B+ Tree。 InnoDB会显示BTree,但是实际上是B+Tree,可以理解为B+Tree是一种特殊的BTree B+树所有值都是按顺序排列存储,每个叶子到 阅读全文
posted @ 2022-03-11 14:22 张三丰学Java 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 索引也叫键,是存储引擎用于快速找到记录的一种数据结构 当表中数据越大的时候,索引对性能的影响越重要。 数据量小并且负载低的时候,不恰当的索引对性能的影响不明细,但是数据量增大,性能就会急剧下降 索引大大减少了服务器需要扫描的数据量,可以帮助服务器避免排序和临时表,可以将随机io变成顺序io 用索引不 阅读全文
posted @ 2022-03-11 09:22 张三丰学Java 阅读(258) 评论(0) 推荐(0) 编辑