MySQL索引

一、索引的类型
    1.主键索引:不能重复,不能为空
    2.唯一索引:不能重复,可以为空
    3.普通索引:无限制
    4.组合索引:不能为空
    5.全文索引
二、索引的优点
    1.使用索引可以提高查找数据的效率,减少I/O次数,可以更快的分组和排序
三、索引的缺点
    1.索引本身也是表,会占用存储空间索引的维护和创建需要成本,这个成本随着数据量的增大而增大
四、索引的实现原理
    1.哈希索引:仅用于memory存储引擎
    2.全文索引:仅用于MyISAm,只支持英文
    3.B树:平衡多叉树
    4.B+树
五、B树和B+树区别
    1.B树和B+树本质上是一样的,区别就是B+树上所有根节点都不带任何的数据信息,只有索引信息。所有的数据信息都存储在叶子节点上。
    2.B+树更适合外部存储(一般指磁盘存储),由于内节点(非叶子节点)不存储data,所以一个节点可以存储更多的内节点,每个节点能索引的范围更大更精确。也就是说使用B+树单次磁盘IO的信息量相比较B树更大,IO效率更高。
    3.mysql是关系型数据库,经常会按照区间来访问某个索引列,B+树的叶子节点间按顺序建立了链指针,加强了区间访问性,所以B+树对索引列上的区间范围查询很友好。而B树每个节点的key和data在一起,无法进行区间查找。
六、MyISAM和InnoDB的区别
    1.MyISAM是非事务安全的,而InnoDB是事务安全的
    2.MyISAM锁的粒度是表级的,而InnoDB支持行级锁
    3.MyISAM支持全文类型索引,而InnoDB不支持全文索引
    4.MyISAM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyISAM
    5.MyISAM表保存成文件形式,跨平台使用更加方便
    6.MyISAM管理非事务表,提供高速存储和检索以及全文搜索能力,如果在应用中执行大量select操作可选择
    7.InnoDB用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量insert和update操作,可选择

你可能感兴趣的:(MySQL,MySQL)