什么是数据库索引?MySQL官方对索引的定义及索引优劣势分析:每日速读
1、索引
1.1、索引概述:
(资料图片仅供参考)
MySQL官方对索引的定义:索引(index)是帮助MySQL高效获取数据的数据结构(有效),在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。简而言之:帮助MySQL高效的查询出数据的数据结构叫做索引。
一般来说,索引本身也很大,不可能全部都存储在内存中,因此索引一般都是以索引文件的形式存储在磁盘上。索引是数据库用来提高性能最好的方式。
1.2、索引优劣势
优势:
索引类似于书籍的目录,提高数据检索的效率,减少数据库IO的成本通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗
劣势:
实际上索引也是一张表,存储在磁盘上,该表保存了主键与索引字段,并指向实体类的记录。虽然索引大大提高了查询的速度,但是降低了增删改的速度,对表进行update、insert、delete时,需要对索引文件进行更新
1.3、索引结构
索引是在MySQL的存储引擎中实现的,而不是服务层实现的。所以每种存储引擎的索引都是不一样的,也不是所有的存储引擎都支持所有的索引类型。MySQL目前提供了以下4种索引:
BTREE 索引: 最常见的索引类型,大部分索引都支持 B 树索引。HASH 索引:只有Memory引擎支持 , 使用场景简单 。R-tree 索引(空间索引):空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少,不做特别介绍。Full-text (全文索引):全文索引也是MyISAM的一个特殊索引类型,主要用于全文索引,InnoDB从Mysql5.6版本开始支持全文索引。
MyISAM、InnoDB、Memory三种存储引擎对各种索引类型的支持
索引InnoDB引擎MyISAM引擎Memory引擎
BTREE索引支持支持支持
HASH 索引不支持不支持支持
R-tree 索引不支持支持不支持
Full-text5.6版本之后支持支持不支持
在平常,如果没有特殊的说明,都是使用B+树结构组织的索引。其中聚集索引、复合索引、前缀索引、唯一索引默认都是使用 B+tree 索引。
1.3.1、BTREE树
Btree树的特点:
BTree又叫多路平衡搜索树,一颗m叉的BTree特征如下:
树中每个节点最多包含m个孩子除根节点与叶子节点外,每个节点至少有[ceil(m/2)]个孩子若根节点不是叶子节点,至少含有两个孩子所有的叶子节点都在同一层每个非叶子节点由n个key与n+1个指针组成,其中[ceil(m/2)-1]<=n<=m-1
举个例子,以3叉BTree为例,插入1~10数字
(1)、插入1,2的时候
(2)、插入3 (3)、插入4 (4)、插入5 (5)、插入6 (6)、插入7 (7)、插入8 (8)、插入9 (9)、插入10
1.3.2、B+TREE树
B+Tree为BTree的变体,B+Tree与Tree的区别为:
n叉B+Tree最多含有n个key,而BTree最毒含有n-1个key。B+Tree的叶子节点保存所有的key信息,依key大小顺序排列。所有的非叶子节点都可以看作是key的索引部分。
在数据库的聚集索引(Clustered Index)中,叶子节点直接包含卫星数据。在非聚集索引(NonClustered Index)中,叶子节点带有指向卫星数据的指针。
1.3.2、MYSQL中的B+Tree
MySql索引数据结构对经典的B+Tree进行了优化。在原B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能。
1.4、索引分类
(1)、单值索引:及一个索引值包含单个列,一个表可以有多个单列索引 (2)、唯一索引:索引列的值必须唯一,但允许有控制 (3)、复合索引:即一个索引包含多个列
1.5、索引的用法
创建索引
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type]ON tbl_name(index_col_name,...)
查看索引
show index from table_name;
删除索引
DROP INDEX 索引名称 ON 表名;
一些alter命令
1). alter table tb_name add primary key(column_list); 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL2). alter table tb_name add unique index_name(column_list);这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)3). alter table tb_name add index index_name(column_list);添加普通索引, 索引值可以出现多次。4). alter table tb_name add fulltext index_name(column_list);该语句指定了索引为FULLTEXT, 用于全文索引
1.6、索引的设计原则
我们在设计索引的时候,有一些原则,创建索引的以后尽量符合这些原则。便于提升索引的使用效率,更高效的使用索引:
对于查询频率比较高的列,可以设置为索引列索引字段的选择,最佳应从where条件语句中提取,如果where子句中组合比较多,那么应当挑选最常用、效率效果最好的列的组合使用唯一索引,区分度越高,使用索引的效率越高索引可以有效的提升查询数据的效率,但是并不是索引越多越好,索引越多,维护起来月麻烦。对于DML操作而言,会引起相当高的维护代价,可以使用段索引,索引创建之后也是使用磁盘来进行存储的,因此提升索引访问的I/O效率,也可以提升总体的访问效率。假如构成索引的字段的总长度比较短,那么在给定大小的存储块可以存储更多的索引值,相应的可以有效的提升MySQL访问索引的I/O效率利用最左前缀,N个列组合而成的组合索引,那么相当于是创建了N个索引,如果查询时where子句中使用了组成该索引的前几个字段,那么这条查询SQL可以利用组合索引来提升查询效率
创建复合索引:CREATE INDEX idx_name_email_status ON tb_seller(NAME,email,STATUS);就相当于对name 创建索引 ;对name , email 创建了索引 ;对name , email, status 创建了索引 ;
标签: 数据结构
相关推荐:
最新新闻:
- 热消息:全球最权威的学术期刊之一——《科学》
- java的序列化机制是什么?java序列化ID的作用:世界热闻
- rolling(k)函数的用法详解 例子说明rolling函数的用法
- 天天时讯:cdn加速测试:又拍云每个月免费提供15g流量
- 什么是数据库索引?MySQL官方对索引的定义及索引优劣势分析:每日速读
- 微信支付如何关闭“自动扣费”?关闭微信自动扣费的方法步骤 全球报资讯
- 与熊论道为什么解码不了?“熊”孩子都有哪些表现?_世界快看点
- 英国女子号称“现实版睡美人” 每天昏睡22小时
- 环球速递!《神领编年史》新更新上线 SE移除D加密技术
- 2023年2月PS5在英国的销量暴涨316%
- 全球消息!《死亡细胞》重返恶魔城DLC发布上市预告
- 北京最新天气预报:今天最高气温19℃,大气扩散条件和能见度较差
- Arkane确认所有版本《红霞岛》支持跨平台联机
- 太便宜了!精粤B760M主板仅需399元
- 天天微头条丨只能用功能机 司法部要求FTX创始人保释期间不能用智能手机
- 续航50短通勤 五星钻豹电动车1299元:全球热头条
- 索尼克之父中裕司认罪!承认内幕交易
- 环球视讯!微软Win11开始重新设计混音器
- 人民币是什么材料做的|即时看
- 《最终幻想16》不是基于夜光或虚幻引擎运行
- 全球讯息:《破坏领主》3月15日登陆主机 Endgame更新同时发布
- 《宝可梦:朱/紫》1.2更新后部分玩家存档被删除:环球要闻
- Wii U用户重创:任天堂下架马里奥赛车和斯普拉遁
- 烧白做法_烧白如何做
- 国外团队开发出突破性隐形眼镜 可防干眼症 速递
- 热消息:《忍者神龟:变种大乱斗》首曝中字预告 “龟”来依旧是少年
- 红楼梦十二金钗判词|环球热闻
- 当前热讯:男子用微缩模型还原高启强老家:做了11天 约400个配件
- 戴尔推出AW620M无线鼠标 DPI最高26000
- 焦点热议:百威亚太(01876):高端啤酒龙头国内市场“遇冷记”
- 外媒锐评《自杀小队》服务模式:都想学《命运》?
- 《大航海时代:起源》现已在Steam免费发售 支持中文配音
- 《古墓丽影》重启作发售10周年纪念 官方发文庆贺 新视野
- 修培刻灵“蕉仙素”是非药物疗法与现代生物科技的结晶
- 澳大利亚将对猫咪实行“宵禁” 逃跑出门或被处决
- 华语悬疑剧《模仿犯》新预告:3.31网飞独家上线:环球聚看点
- 一本院校回应招聘会有洗碗工岗位 不只面向学生
- 小米MIUI 14迎来最新升级!MIUI相机史诗级更新(附刷机包下载)
- 电视剧山河令演员表|环球观点
- 【当前热闻】荣耀发布四款MagicBook笔记本,主要特点一览
- 看片太爽了!极空间 Z4s NAS 售价新低:2899元
- 《龙珠斗士Z》官方宣布仍将调整平衡性 新更新稍后实施:环球速递
- 每日讯息!Furyu ARPG新作《恸哭机巧》OP动画公开
- 每日热文:CDPR发布《巫师3:狂猎》萝卜介绍 网友:不是叫葡萄吗
- 《美生中国人》制作花絮:杨紫琼、吴彦祖玩转校园_当前最新
- 新资讯:《火焰纹章:结合》DLC第三弹纹章士介绍影片公开
- 折叠屏手机首次出货量下滑,同比下降 26%
- 全球今头条!荣耀 MagicBook X 14/16 Pro 笔记本发布:4299 元起,13 代酷睿
- 抄底价!小米Redmi K50 Ultra 12+256G仅2619元|环球头条
- 环球热讯:京东百亿补贴正确打开方式轻松get 飞利浦小旋风空气炸锅只要349元
- 折叠屏手机首次出货量下滑,同比下降 26%
- 饭制虚幻5《GTA:圣安地列斯》重制版预告:CJ前面跑 飞机后头追
- 雷军:小米造车进展超预期 预计明年上半年量产_世界球精选
- 环球热点!《如龙 维新·极》制作人采访:焕然一新的游戏体验!
- 传闻:《GTA6》2024年底推出 本体或削减内容用DLC补齐-看热讯
- 卧龙苍天陨落天柱派钥匙在哪?卧龙苍天陨落道士家的后院钥匙位置_今日热闻
- 5秒学会用抖音 但当代年轻人已不会用打印机甚至电脑:时代真变了
- “雷锋精神”在警营 伊春公安将爱“钉”入百姓家:天天快资讯
- 世界滚动:三微边设计!小米27英寸2K IPS显示器低至749元
- 环球精选!超大超爽!12G+512G旗舰机2149元
- 焦点关注:春季行情!苏宁易购举办专场供应商沟通会
- 直降500元!铭瑄MS-RTX4080 iCraft OC16G瑷珈独立显卡
- 每日快报!12代酷睿四核神U加持!天钡N-box迷你主机低至898元
- 游戏改编《龙与地下城》新预告:宝箱怪、噬脑怪亮相:今日最新
- 座位螺栓没拧紧!特斯拉在美召回3470辆汽车|焦点热闻
- 《怪物猎人崛起:曙光》推出冥渊龙和混沌黑蚀龙Q版毛绒玩具 售价196元
- 《卧龙:苍天陨落》PS5性能分析 身临其境般的体验_当前通讯
- 航空航天
- 33万买奥迪A7L 内部福利普通人别想:世界观热点
- 2022年全球光伏组件出货量top10!黑马“大明光福”首次入选_全球头条
- 京东百亿补贴3月6日全面上线 海信高清电视仅售755元
- 【环球速看料】京东百亿补贴全面上线:4899元买iPhone 14
- 焦点关注:国产游戏显卡直降1100元:已支持42款游戏
- 举义旗迎国货,一科技公司发起反ChatGPT号召
- 全球消息!《最后生还者》第八集IGN 9分:绝望使人坠入深渊
- 致敬经典 粉丝打造《最终幻想6》2D-HD重制版
- 天天视点!《最终幻想16》新宣传片 更多游戏细节介绍
- 天天新资讯:女子10元机选票擒双色球830万 连续多天没睡好觉
- 环球快看:刘亦菲捧花手机壳搜索量飙升2852%:换上能带来好运
- 《红霞岛》本周举办媒体预览活动 可以实机游玩 最新快讯
- 上海迪士尼重启握手拥抱合影!网友:已经等不及了_世界今亮点
- B站《三体》复播被观众狂刷好评:网友们是懂阴阳的-最新快讯
- R星设计总监:《GTAOL》专为单人游戏而设计
- 如何辨别蜂蜜真假?教你5个小窍门轻松辨别真假蜂蜜
- 天天讯息:iPhone 15 系列前玻璃面板曝光:超窄边框,全系灵动岛