当前位置: 首页 > news >正文

如何回答——请简述MySQL索引类型

想必大家在被问到这个问题的时候,在网上总是能搜到不同的回答,却又各不相同。其实这些答案大部分都是正确的,只不过在阐述MySQL索引类型的时候从不同方面入手而已。这里归纳如下,具体的机制可以参考其他博文:

从数据结构角度

  1. B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理

  2. hash索引:
    • 仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询
    • 其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引
    • 只有Memory存储引擎显示支持hash索引
  3. FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)

  4. R-Tree索引(用于对GIS数据类型创建SPATIAL索引)

从物理存储角度

  1. 聚集索引(clustered index)

  2. 非聚集索引(non-clustered index)

从逻辑角度

  1. 主键索引:主键索引是一种特殊的唯一索引,不允许有空值

  2. 普通索引或者单列索引

  3. 多列索引(复合索引):复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合

  4. 唯一索引或者非唯一索引

  5. 空间索引:空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。
    MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建

CREATE TABLE table_name[col_name data type]
[unique|fulltext|spatial][index|key][index_name](col_name[length])[asc|desc]

参数解析:

1、unique|fulltext|spatial为可选参数,分别表示唯一索引、全文索引和空间索引;
2、index和key为同义词,两者作用相同,用来指定创建索引
3、col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择;
4、index_name指定索引的名称,为可选参数,如果不指定,MYSQL默认col_name为索引值;
5、length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度;
6、asc或desc指定升序或降序的索引值存储

转载于:https://www.cnblogs.com/huang-yc/p/10999810.html

相关文章:

  • WUSTOJ 1307: 校门外的树(Java)
  • 【java】查重类的实现
  • 解决Visual Studio 2017隐藏“高级保存选项”命令
  • 深入理解HashMap(JDK1.8)
  • install web3 1.0
  • 1_achcom
  • WinServer-SMTP服务
  • maccms代码审计
  • 模块封装与程序集
  • 剑指offer系列15:栈的压入、弹出序列
  • go语言快速入门教程
  • 物理学界四大神兽
  • Redis数据操作
  • Vue2.0 中,“渐进式框架”和“自底向上增量开发的设计”这两个概念是什么?(转)...
  • 9、Java语句
  • Git学习与使用心得(1)—— 初始化
  • HTTP 简介
  • SegmentFault 2015 Top Rank
  • vue 个人积累(使用工具,组件)
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 高程读书笔记 第六章 面向对象程序设计
  • 区块链共识机制优缺点对比都是什么
  • 容器服务kubernetes弹性伸缩高级用法
  • 微信开放平台全网发布【失败】的几点排查方法
  • 用 Swift 编写面向协议的视图
  • 用mpvue开发微信小程序
  • ​ubuntu下安装kvm虚拟机
  • # Panda3d 碰撞检测系统介绍
  • #### go map 底层结构 ####
  • #图像处理
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4)logging(日志模块)
  • (a /b)*c的值
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (区间dp) (经典例题) 石子合并
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)80c52学习之旅-起始篇
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)EOS中账户、钱包和密钥的关系
  • (转)socket Aio demo
  • (转)关于pipe()的详细解析
  • (转)平衡树
  • .aanva
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Core 中的路径问题
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net framework4与其client profile版本的区别
  • .net 微服务 服务保护 自动重试 Polly