索引的定义
索引是一种为了加速对数据库表中数据行的检索而创建的分散存储的数据结构。1.索引的本质是一种数据结构2.索引是分散存储的磁盘及索引
Mysql 查询 IO读取按 页读取。 MySQL默认指定每页读取数据16KB 数据。
Hash索引的原理,基于Hash表实现,通过对索引列的值做Hash计算得到一个HashCode,通过类似取模运算得到一个下标。然后将数据的磁盘序列存储在指定下标的位置(类似Java中HashMap的原理,出现Hash冲突转换成链表)。根据索引检索数据时,将索引值通过同样的Hash运算定位到数组位置得到磁盘序列,拿到磁盘序列后找到指定的检索数据。
1.优点: 等值匹配效率很高(因为基于散列算法,每个key对应一个hashcode)。
2.缺点: 由于是对索引列的值做hash计算后取模得到下标。无法对索引做大小判断。因此不支持范围查询。和排序功能。
3.说明: MySQL官方定义,在Innodb,MyISAM 引擎中不支持用户级别的Hash索引。只有自适应Hash索引。 在Memery 引擎中是运行用户自定义Hash索引。