MySQL-索引类型优缺点

 
MySQL 主要集中索引类型:FULLTEXT,HASH,BTREE,RTREE
 
  1. FULLTEXT
    即为全文索引,目前只有MyISAM支持。不过目前只有 CHAR,VARCHAR,TEXT列上 可以创建全文索引。
 
  2. HASH
    由于 HASH 的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。
    HASH索引 可以一次定位,不需要像树形索引那样逐层查找,因此效率极高。但是,这种高效是有限制的,即只有在 “=” 和 “in” 条件下高效,对于范围查询、排序及组合索引仍然效率不高。
 
  3. BTREE
    BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口 root开始,依次遍历 node,获取leaf这是MySQL里默认和最常用的索引类型。
 
  4. RTREE
    RTREE在MySQL 很少使用,仅支持 geometry数据类型,支持该类型的存储引擎只有 MyISAM、DBb、InnoDB、NDb、Archive几种。
    相对于BTREE,RTREE的优势在于范围查询。
 
 
  行锁表锁:
    简述: InnoDB行锁是通过索引上的索引项加锁来实现的, 这一点MySQL和Oracle不同, 后者是通过在数据库中相对应的数据行加锁来实现的. InnoDB这种行锁实现特点意味着: 只有通过索引条件检索数据, InnoDB 才使用行级锁, 否则, InnoDB将使用表锁!
    1. 在不通过索引条件查询的时候, InnoDB 确实使用的是表锁, 而不是行锁.
    2. 由于MySQL的行锁是针对索引加的锁, 不是针对记录加的锁, 所以虽然访问不同的行记录. 但是如果使用的是相同的索引键, 时会出现锁冲突的. 应用设计的时候要注意这一点
 
 
 
 
 
 
 
posted @ 2022-11-10 17:43  茄子777  阅读(74)  评论(0编辑  收藏  举报