分析&回答
从功能逻辑角度,可分为:
- 普通索引 INDEX(普通索引) ALTER TABLE
table_name
ADD INDEX index_name (column
) - 唯一索引 UNIQUE(唯一索引) ALTER TABLE
table_name
ADD UNIQUE (column
) - 主键索引 PRIMARY KEY(主键索引) ALTER TABLE
table_name
ADD PRIMARY KEY (column
) - 组合索引 组合索引 ALTER TABLE
table_name
ADD INDEX index_name (column1
,column2
,column3
) - 全文索引 FULLTEXT(全文索引) ALTER TABLE
table_name
ADD FULLTEXT (column
)
从数据结构角度,可分为:
- B+树索引
- hash索引
- 全文索引
- 空间数据索引(R-Tree索引)(不要求)
从物理存储角度,可分为:
- 聚簇索引
- 非聚簇索引
反思&扩展
说说数据库索引类型?(Oracle)
逻辑上:
- Single column 单行索引
- Concatenated 多行索引
- Unique 唯一索引
- NonUnique 非唯一索引
- Function-based函数索引
- Domain 域索引
物理上:
- Partitioned 分区索引
- NonPartitioned 非分区索引
- B-tree:
- Normal 正常型B树
- Rever Key 反转型B树
- Bitmap 位图索引
索引结构:
B-tree:
- 适合与大量的增、删、改(OLTP);
- 不能用包含OR操作符的查询;
- 适合高基数的列(唯一值多)
- 典型的树状结构;
- 每个结点都是数据块;
- 大多都是物理上一层、两层或三层不定,逻辑上三层;
- 叶子块数据是排序的,从左向右递增;
- 在分支块和根块中放的是索引的范围;
Bitmap:
- 适合与决策支持系统;
- 做UPDATE代价非常高;
- 非常适合OR操作符的查询;
- 基数比较少的时候才能建位图索引;
B*tree索引的话通常在访问小数据量的情况下比较适用,比如你访问不超过表中数据的5%,当然这只是个相对的比率,适用于一般的情况。bitmap的话在数据仓库中使用较多,用于低基数列,比如性别之类重复值很多的字段,基数越小越好。文章来源:https://www.toymoban.com/news/detail-699449.html
喵呜面试助手:一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!文章来源地址https://www.toymoban.com/news/detail-699449.html
到了这里,关于MySQL索引的类型有哪些?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!