索引和全文索引
- 格式:ppt
- 大小:126.00 KB
- 文档页数:33
数据库索引的种类数据库索引是数据库中提高查询效率的一种重要手段,它可以帮助数据库快速查找到需要的数据,提高数据查询的效率和准确性。
在数据库中,索引可以按照不同的属性进行分类。
一、单列索引单列索引是最普及的索引类型之一,也是最简单的索引类型。
它只涉及到一个字段或一个列,基本实现原理就是为查询语句中涉及到的字段或列创建索引,通过索引找到数据记录并返回给用户。
常见的单列索引包括B-Tree索引、Hash索引、全文索引等。
1.B-Tree索引:B-Tree索引使用B-Tree数据结构进行排序以减少磁盘I/O操作次数,通常用于比较简单的查询条件,如等于、大于、小于等操作,对于范围查询和排序操作,B-Tree索引效果较差。
2.Hash索引:Hash索引使用哈希表进行操作,它对于等值查询效果很好,但不适合范围查询、模糊查询等操作。
3.全文索引:全文索引可以识别文本中的单词和单词的位置,将文本按照单词进行索引,通常用于文本搜索操作。
二、联合索引联合索引也称为复合索引,指针是在多列上建立的索引,这种索引比单列索引更适合复杂查询。
常见的联合索引包括B-Tree索引、R-Tree索引、Hash索引等。
1.B-Tree索引:在B-Tree索引中建立的联合索引,必须先按照前面的字段排序,然后再按照后面的字段排序,索引的效率与字段的排序非常相关。
2.R-Tree索引:R-Tree索引是一种多维空间索引结构,它能够有效处理空间数据类型的查询问题,比如地理位置查询。
3.Hash索引:联合Hash索引也是使用哈希表进行操作,只不过会把多个字段进行哈希计算,再将它们合并成一个哈希值,通常用于需要快速访问的数据表。
三、唯一索引唯一索引是一个不允许重复数据的索引,它可以避免数据表中出现重复数据的情况。
常见的唯一索引包括B-Tree唯一索引、Hash唯一索引等。
1.B-Tree唯一索引:当创建B-Tree唯一索引时,所有的值都被唯一索引所占据,并且该索引可以加速唯一值约束的检查。
数据库中索引的分类
以下是 8 条关于数据库中索引的分类:
1. 主键索引呀,就好比是班级里的班长!比如在学生信息表中,以学号作为主键索引,那学号就是独一无二且能快速定位到具体学生信息的存在呢。
2. 唯一索引呢,就像运动会上每个项目只能有一个冠军呀!像身份证号,在人员信息库中就是唯一索引,能确保不会有重复的身份。
3. 普通索引啊,这就像是你有一堆书,你给一些重点章节做了标记,方便你之后快速找到!比如产品表中按照产品名称建立的普通索引。
4. 聚集索引哟,简直就是把相关的东西都紧紧聚在一起的小团体!比如说按照日期把事件都聚集在一起,查起来那叫一个快呀。
5. 非聚集索引呢,就如同把相似的东西放在一起的分类盒!像是在商品分类表里按照类别建立非聚集索引,找东西十分方便嘞。
6. 复合索引呀,不就是多个条件组合起来的超级法宝嘛!就好像找东西时,既要看颜色又要看形状,一下就精准定位了呢!比如按照姓名和年龄建立的复合索引。
7. 全文索引,哇,这个厉害啦!就像在一篇超级长的文章里,能迅速找出你想要的那个关键词!比如在文档库中使用全文索引来快速查找某个特定的词语。
8. 空间索引呢,这相当于给空间信息绘制了一幅特别的地图呀!像在地理信息系统中根据地理位置建立的空间索引。
我的观点结论就是:数据库中索引的分类真的是太重要啦,可以大大提高数据查询和管理的效率呢!。
Sphinx 全文搜索引擎1:索引与全文索引的概念数据库中,表中的行特别多,如何快速的查询某一行,或者某一个文章中的单词,索引--->查询速度快全文索引-->针对文章内容中的单词各做索引2:mysql支不支持全文索引?答:支持, 但是A:innoDB引擎在5.5,及之前的版本不支持(5.7实测可以在innodb上建fulltext),只能在myisam 引擎上用fulltextB: mysql的全文索引功能不够强大C: 无法对中文进行合理的全文索引----- mysql.无法进行中文分词.注意:全文索引的停止词停止词是指出现频率极高的单词, 不予索引.如果某单词出现频率50%以上,列为停止词或者是经过统计的常用词,也列为停止词---如is, are , she, he, this 等等就像中文中: “的”,”是”,”呵呵”总结: 我们要对中文做全文搜索引擎,需要解决2个问题1: 性能提高,用第3方的全文搜索引擎工具,如sphinx, solr等2: 中文分词! (如mmseg)编译安装sphinx+mmseg == coreseek官网: 0: 安装工具包yum install make gcc gcc-c++ libtool autoconf automake imake libxml2-devel expat-devel1: 下载解压源码,ls查看csft-4.1 mmseg-3.2.14 README.txt testpack其中--csft-4.1是修改适应了中文环境后的sphinxMmseg 是中文分词插件Testpack是测试用的软件包2: 先安装mmseg2.1: cd mmseg2.2: 执行bootstrap脚本2.3: ./configure --prefix=/usr/local/mmseg2.4: make && make install3: 再安装sphinx(coreseek)3.1: 到其目录下执行buildconf.sh3.2: ./configure --prefix=/usr/local/sphinx--with-mysql=/usr/local/mysql--with-mmseg--with-mmseg-includes=/usr/local/mmseg/include/mmseg/--with-mmseg-libs=/usr/local/mmseg/lib/3.3: make installSphinx的使用分三个部分:1: 数据源---要让sphinx知道,查哪些数据,即针对哪些数据做索引(可以定义多个源)2: 索引配置--针对哪个源做索引, 索引文件放在哪个目录?? 等等3: 搜索服务器----sphinx可以在某个端口(默认9312),以其自身的协议,与外部程序做交互.具体的步骤:1: 数据源典型配置source test {type = mysqlsql_host = localhostsql_user = rootsql_pass =sql_db = testsql_query_pre = set names utf8sql_query_pre = set session query_cache_type=offsql_query = select id,catid,pubtime,title,content from newssql_attr_uint = idsql_attr_uint = catidsql_attr_timestamp = pubtimesql_query_info = select * from news where id=$id}2: 索引典型配置index test {type = plainsource = testpath = /usr/local/sphinx/var/data/test #生成索引放在哪docinfo = externcharset_dictpath = /usr/local/mmseg/etc/charset_type = zh_cn.utf-8}2.1: 生成索引文件/path/sphinx/bin/indexer -c ./etc/sphinx.test.conf test (test是索引名)2.2: 查询测试A:在命令下,用path/bin/search -c ./path/conf 关键词B:开启搜索服务器,利用客户端连接搜索服务器来查询,见下3: 配置搜索服务器接口,启动搜索服务器searchd {listen = localhost:9312pid_file = /usr/local/sphinx/var/log/searchd.pidlog = /usr/local/sphinx/var/log/test.logquery_log =/usr/local/sphinx/var/log/test.query.logclient_timeout = 5max_children = 5max_matches = 1000seamless_rotate = 1}3.2 : 使用客户端连接搜索服务器1)系统testpack包里带的sphinxapi.php2)编译php的sphinx扩展1: 官方搜索下载sphinx扩展的压缩包并解压(假设解析在/usr/local/src/sphinx) 2: /path/php/bin/phpize 执行3: configure --with-php-config=/xxx/path/php/bin/php-config出错: e rror: Cannot find libsphinxclient headers错误原因: 没有预告编译libsphinxclient4: 解决3中的错误cd /usr/local/src/sphinx/api/libsphixclient/目录下# sh buildconf.sh# ./configure# make && make install5: 编译php的sphinx.so扩展# cd /path/to/sphinx1.3.0/#./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx# make && make install6: 编辑php.ini,把sphinx.so扩展引入并重启apache, 如果是php-fpm方式运行,则重启php-fpm进程查询分3部分1: 查询2: 过滤3: 排序1.1: 查询的模式查询的模式直接影响查询结果,SPH_MA TCH_ALL, 匹配所有查询词(默认模式);SPH_MA TCH_ANY, 匹配查询词中的任意一个;SPH_MA TCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配;SPH_MA TCH_BOOLEAN, 将查询看作一个布尔表达式SPH_MA TCH_ALL->Query(‘西瓜南瓜’) // 文档中有西瓜并且有南瓜才被选中SPH_MA TCH_ANY //->Query(‘西瓜南瓜’) // 文档中有西瓜或有南瓜被选中S PH_MA TCH_PHRASE // 严格理解为两词连续如内容”西瓜南瓜东瓜”->Query(‘西瓜南瓜’), 可以命中->Query(‘西瓜东瓜’), 不能命中, 因为西瓜东瓜两词不连续如果你觉得切换模式麻烦,可用BOOLEAN模式SPH_MA TCH_BOOLAN / /这个模式,能达到上3个模式的效果,需要在查询词之间做表达式如words1 & words2 则等同SPH_MA TCH_ALLWords1 | words2 则,等同SPH_MA TCH_ANYWords1 << word2 则是word1,word2都要有,且words1出现在word2前面1.2: 按字段查询如:要求只查content字段中的”西瓜”关键词“西瓜”====>”@content 西瓜”注意: 按字段查询需要把查询模式设置成”SPH_MA TCH_EXTNEDED”2 按属性过滤SetIDRange($min,$max); // 按id的范围过滤SetFilter($attr,$values=array(),$exclue=false); //SetFilterRange ( $attribute, $min, $max, $exclude=false )SetFilterFloatRange (设置浮点数范围)SetLimits($offset,$limits) //设置偏移量及取出条目例:->SetIDRange(2,3);->SetLimits(2,2); 取第3-4条->SetFilter(‘catid’,array(3,4),false) ; 以catid in (3,4) 为条件进行过滤->SetFilter(‘catid’,array(3,4),true) ; 以catid not in (3,4) 为条件,进行过滤注意:如果setLimits中碰到”per-query max_matches=0 out of bounds (per-server max_matches=1000)”错误,可以通过给setLimits指定第3个参数为大于0的整数,来解决.3: 按属性或权重排序排序模式:SPH_SORT_RELEV ANCE 模式, 按相关度降序排列(最好的匹配排在最前面)SPH_SORT_ATTR_DESC 模式, 按属性降序排列(属性值越大的越是排在前面)SPH_SORT_ATTR_ASC 模式, 按属性升序排列(属性值越小的越是排在前面)SPH_SORT_TIME_SEGMENTS 模式, 先按时间段(最近一小时/天/周/月)降序,再按相关度降序SPH_SORT_EXTENDED 模式, 按一种类似SQL的方式将列组合起来,升序或降序排列。
索引的类型分类、区别、优缺点导读:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使⽤不同的索引。
MyISAM和InnoDB存储引擎:只⽀持BTREE索引,也就是说默认使⽤BTREE,不能够更换。
MEMORY/HEAP存储引擎:⽀持HASH和BTREE索引。
mysql的索引我们分为三⼤类来讲单列索引(普通索引,唯⼀索引,主键索引)、组合索引、全⽂索引。
⼀、单列索引:⼀个索引只包含单个列,但⼀个表中可以有多个单列索引。
这⾥不要搞混淆了1:普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插⼊重复值和空值,纯粹为了查询数据更快⼀点。
2:唯⼀索引:索引列中的值必须是唯⼀的,但是允许为空值。
3:主键索引:是⼀种特殊的唯⼀索引,不允许有空值。
(主键约束,就是⼀个主键索引)。
主键索引与唯⼀索引的区别:1. 主键是⼀种约束,唯⼀索引是⼀种索引,两者在本质上是不同的。
2. 主键创建后⼀定包含⼀个唯⼀性索引,唯⼀性索引并不⼀定就是主键。
3. 唯⼀性索引列允许空值,⽽主键列不允许为空值。
4. 主键索引在创建时,已经默认为⾮空值+ 唯⼀索引了。
5. ⼀个表最多只能创建⼀个主键索引,但可以创建多个唯⼀索引。
6. 主键更适合那些不容易更改的唯⼀标识,如⾃动递增列、⾝份证号等。
7. 主键可以被其他表引⽤为外键,⽽唯⼀索引不能。
⼆、组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使⽤了这些字段的左边字段时,索引才会被使⽤,使⽤组合索引时遵循最左前缀集合。
例如,这⾥由id、name和age3个字段构成的索引,索引⾏中就按id/name/age的顺序存放,索引可以索引下⾯字段组合(id,name,age)、(id,name)或者(id)。
如果要查询的字段不构成索引最左⾯的前缀,那么就不会是⽤索引,⽐如,age或者(name,age)组合就不会使⽤索引查询。
三、全⽂索引:全⽂索引,只有在MyISAM引擎上才能使⽤,只能在CHAR,VARCHAR,TEXT类型字段上使⽤全⽂索引,介绍了要求,说说什么是全⽂索引,就是在⼀堆⽂字中,通过其中的某个关键字等,就能找到该字段所属的记录⾏,⽐如有"你是个⼤煞笔,⼆货 ..." 通过⼤煞笔,可能就可以找到该条记录。
搜索引擎的分类1、全文索引型全文搜索引擎,国内是著名的百度搜索引擎。
国内著名的有百度(Baidu)国外则是Google。
它们从互联网提取各个网站的信息(以网页的文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。
从搜索结果来源的角度,全文搜索引擎又可细分为两种,一种是拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,并自建网页数据库,搜索结果直接从自身的数据库中调用;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果,如Lycos引擎。
2、目录索引型目录索引虽然有搜索引擎功能,但严格意义上不能称为真正的搜索引擎。
用户完全不需要依靠关键词(Keywords)查询,只是按照分类目录找到所需要的信息。
目录索引中,国内具代表性就是新浪、搜狐、网易分类目录和Yahoo网站雅虎。
其他著名的还有Open Direct ory Project(DMOZ)、LookSmart、About等。
3、元数据索引型元搜索引擎接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户,著名的元搜索引擎有360搜索、infoSpace、D ogpile、VIsisimo等,在搜索结果排列方面,有的直接按来源排列搜索结果,如Dogpile,有的则按自定的规则将结果重新排列组合,如Vivisimo。
4、垂直索引型垂直搜索引擎适用于有明确搜索意图情况下进行检索。
例如,用户购买机票、火车票、汽车票时,或想要浏览网络视频资源时,都可以直接选用行业内专用搜索引擎,以准确、迅速获得相关信息。
5、互动式索引型互动式搜索引擎,在用户输入一个查询词时,尝试理解用户可能的查询意图,智能展开多组相关的主题,引导用户更快速准确定位自己所关注的内容。
比如:搜狗搜索是搜狐公司强力打造的全球首个第三代互动式搜索引擎。
数据库中的索引设计技巧索引是数据库中的一种非常重要的对象,它可以大大提高数据库的查询效率。
但是,如果设计不当,索引也会成为数据库性能的瓶颈。
本文将介绍一些数据库中的索引设计技巧,以帮助你充分利用索引提高数据库的性能。
一、选择正确的索引类型在数据库中,常见的索引类型包括B树索引、哈希索引和全文索引等。
在选择索引类型时,需要根据实际情况进行综合考虑。
B树索引适合处理范围查询和排序等操作。
如果查询语句涉及到范围查询、排序等操作,建议采用B树索引。
但是,由于B树索引需要时时刻刻保持平衡,因此在更新频繁的情况下,B树索引的性能可能会受到影响。
哈希索引适合处理等值查询。
哈希索引可以将索引值映射到一个固定长度的地址上,因此查询性能非常高。
但是,哈希索引无法支持范围查询、排序等操作。
全文索引适合处理文本查询。
全文索引可以建立在文本列上,可以支持模糊查询、语义查询等操作。
但是,全文索引的构建比较复杂,而且需要消耗更多的存储空间。
二、为重要的列创建索引在数据库中,有些列比其他列更加重要。
比如,主键列、外键列、经常用于查询的列等。
对于这些重要的列,建议创建索引,以提高查询性能。
在创建索引时,需要考虑索引的选择性。
选择性是指该列中不同的值占总行数的比例。
如果选择性太低,即不同的值很少,那么建立索引的效果可能不太好。
因此,建议选择具有较高选择性的列创建索引。
三、合理地使用组合索引组合索引是由多个列组成的索引,可以提高多列联合查询的效率。
但是,在使用组合索引时需要注意以下几点:1.列的顺序应该合理。
首先要考虑经常使用的列,然后再考虑其他列。
如果经常使用的列放在后面,可能会失去索引的效果。
2.组合索引中的列数不能太多。
组合索引中的列数越多,索引树的深度越大,查询效率也就越低。
3.组合索引不一定比单列索引好。
有时候,单列索引也可以满足查询的需求,而且更加简单、易于维护。
四、定期重新建立索引在数据库中,添加、删除、修改等操作都会影响索引的性能。
数据库的索引原理
数据库的索引原理是一种数据结构,用于提高数据库的查询效率。
索引是一个按照特定规则组织的数据结构,它包含了表中某一列(或多列)的值和对应的物理存储位置。
通过索引,数据库可以快速定位到所需的数据,而不需要遍历整个数据表。
索引主要有以下几个原理:
1. B-树索引:常用的索引类型之一,使用B-树来存储索引值。
B-树是一种多叉平衡查找树,它的叶子节点存储了数据行的引用或数据本身。
通过B-树索引,数据库可以快速定位到匹配的记录,减少磁盘I/O次数。
2. 哈希索引:哈希索引是将索引键值通过哈希函数计算后得到一个哈希码,然后将该哈希码与数据行的物理存储位置进行映射。
哈希索引适用于等值查找,但不适用于范围查询。
3. 聚集索引和非聚集索引:聚集索引是按照表的主键或唯一键来组织数据的索引,数据存储在索引的叶子节点上。
非聚集索引则是在叶子节点上存储索引键值和指向数据行的物理地址。
4. 复合索引:复合索引是通过多列联合创建的索引,可以在查询中同时使用多个列进行查找。
复合索引可以提高符合索引列顺序的查询效率。
5. 全文索引:全文索引用于对文本数据进行全文搜索。
全文索引不只是单一关键字的匹配,而是将文本数据进行分词、分析和索引,从而提供更快速和准确的搜索结果。
总的来说,索引的原理是为了提高数据库的查询效率,减少磁盘I/O次数,并根据不同的查询需求选择合适的索引类型和策略。
MYSQL数据库四种索引类型介绍MySQL数据库提供了四种索引类型,包括B树索引、哈希索引、全文索引和空间索引。
下面将逐一介绍这些索引类型。
1.B树索引B树索引是MySQL中最常用的索引类型,也是默认的索引类型。
它使用B树数据结构来存储索引数据,每个节点包含多个键值对和指向子节点的指针。
B树索引适用于范围查询,可以高效地支持等值查询、范围查询和排序。
B树索引有以下特点:-能够平衡地处理随机和顺序访问,适用于高并发的读写操作。
-支持多列索引,可以根据多个列进行查询。
-适用于存储大量数据的表,可以高效地支持范围查询。
-可以使用前缀索引,用于减少索引的大小和提高查询性能。
-适用于高优先级的查询,如唯一索引和主键索引,可以提高查询速度。
2.哈希索引哈希索引使用哈希算法将键值映射到一个哈希表中,每个哈希表中包含键值对。
哈希索引适用于等值查询,但不支持范围查询和排序。
因此,哈希索引在MySQL中的使用场景相对较少。
哈希索引有以下特点:-适用于等值查询,可以高效地支持等值查询。
-不支持范围查询、排序和部分匹配查询。
-适用于高并发的读写操作,因为哈希索引的读写性能高。
-对于较小的表和较频繁的查询,可以提供更快的查询速度。
3.全文索引全文索引用于包含文本数据的列,如文章内容、博客正文等。
全文索引可以在文本中关键字,而不是完全匹配。
MySQL提供了Full-Text功能,可以高效地进行全文索引。
全文索引有以下特点:-适用于需要在文本数据中进行模糊匹配的查询。
-支持关键字和全文。
-可以设置的匹配程度和权重。
-支持布尔运算表达式,可以组合多个关键字进行查询。
-可以根据文本的相关性进行排序。
4.空间索引空间索引用于存储和查询包含空间数据的列,如地理位置、二维坐标等。
MySQL提供了R-Tree索引来支持空间数据的存储和查询。
空间索引有以下特点:-适用于需要高效地进行空间数据查询的表。
-支持范围查询、最近邻查询和距离查询。
数据库索引选择的原则与方法数据库索引是关系型数据库中非常重要的组成部分,它能够提高查询性能和数据的访问效率。
在设计数据库时选择合适的索引,能够极大地提高查询速度和整体性能。
本文将介绍数据库索引的原则和方法,帮助读者更好地理解和应用数据库索引。
一、索引的基本原则1.选择唯一性索引:唯一性索引可以确保列中的每个值都是唯一的,这样可以避免出现重复数据。
在应用程序查询中,通过使用唯一性索引,可以快速地定位到想要的数据记录。
2.选择经常查询的列:根据应用程序的查询需求,选择经常被访问的列作为索引列。
这样设计的索引可以大大减少查询的时间复杂度,提高查询性能。
3.选择匹配度高的列:索引的目的是通过减少扫描的记录数来提高查询效率,因此应选取匹配度高的列作为索引。
例如,对于一个性别列,只包含两个可能值“男”和“女”,这种情况下选择该列作为索引是没有意义的。
4.避免对大字段进行索引:大字段(如文本或图像)的索引会占用大量的存储空间和I/O资源,且不利于提高查询性能。
因此应该避免对大字段进行索引。
5.根据列的选择性建立索引:选择性是指数据库表中不同的值占比。
选择性越高,索引的效果越好。
可以通过计算列的选择性来判断是否适合作为索引列。
选择性计算公式为:列中唯一的值的数量/总记录数。
二、索引的常用方法1.单列索引:最常用的索引类型。
它只包含一个列作为索引列,并且只能以该列的顺序进行有序的查找。
通过使用单列索引,可以极大地提高查询效率。
2.复合索引:由多个列组成的索引。
复合索引可以根据多个列的顺序进行查询,提高查询性能。
复合索引的创建需要仔细选择索引列的顺序以及是否采用升序或降序。
3.全文索引:用于搜索文本内容的索引,能够快速进行全文搜索。
全文索引可以在文本字段上提供高效的关键字搜索和排名。
4.哈希索引:基于哈希算法的索引,将索引列的哈希值存储在索引中。
它对于等值查找非常快,但不支持范围查询和排序操作。
5.空间索引:用于地理信息数据或空间对象的索引,支持空间数据的查询和分析。
tidb 索引原理TiDB是一个分布式的关系型数据库,为了更高效地处理大数据量的查询,它采用了一系列的索引机制来提高查询速度。
本文将介绍TiDB 中的索引原理。
一、索引概述在关系型数据库中,索引是一种数据结构,它可以帮助我们快速地定位到数据。
在查询时,如果没有索引,数据库会从头开始扫描整个表格,直到找到需要的数据。
而有了索引,数据库可以直接根据索引找到需要的数据,大大提高了查询速度。
二、TiDB 索引类型1. 主键索引主键索引是 TiDB 中最常用的索引类型,它是一种唯一性索引,用于保证每一行数据在表中的唯一性。
主键索引可以使用 B+ 树等数据结构来实现。
2. 普通索引普通索引是用于加快查询的一种索引类型,它可以使用 B+ 树等数据结构来实现。
普通索引可以包含重复值,因此查询时需要注意。
3. 唯一索引唯一索引与主键索引类似,都是用于保证每一行数据在表中的唯一性。
唯一索引可以使用 B+ 树等数据结构来实现。
4. 全文索引全文索引是用于文本搜索的一种索引类型,可以将文本内容分词后建立索引,提高搜索速度。
TiDB 中的全文索引采用的是 FTS5 算法。
5. 空间索引空间索引是用于处理空间数据的一种索引类型,可以加速空间查询和空间分析。
TiDB 中的空间索引采用的是 R-tree 算法。
三、TiDB 索引实现原理1. 索引结构TiDB 中的索引结构主要采用了 B+ 树和 Hash 索引两种结构。
B+ 树是一种多路平衡搜索树,它可以有效地减少磁盘 I/O 操作,是一种常用的索引结构。
在 TiDB 中,主键索引和普通索引都采用了B+ 树结构。
Hash 索引是一种高效的索引结构,可以快速地定位到数据。
在TiDB 中,唯一索引采用了 Hash 索引结构。
2. 索引维护在 TiDB 中,索引的维护主要有两种方式:在线维护和离线维护。
在线维护是指在数据插入、修改和删除时同时更新索引,这种方式可以保证索引的实时性,但会对写入性能产生一定的影响。