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

java script 做网站买卖链接网

java script 做网站,买卖链接网,企业网站源码wap,接入商 济南网站建设文章目录 前言一. B Tree 索引1. 概念2. 聚集索引/聚簇索引3. 辅助索引/二级索引4. 回表5. 联合索引/复合索引6. 覆盖索引 二. 哈希索引三. 全文索引 前言 InnoDB存储引擎支持以下几种常见索引:BTree索引,哈希索引,全文索引 一. B Tree 索引…

文章目录

    • 前言
    • 一. B+ Tree 索引
      • 1. 概念
      • 2. 聚集索引/聚簇索引
      • 3. 辅助索引/二级索引
      • 4. 回表
      • 5. 联合索引/复合索引
      • 6. 覆盖索引
    • 二. 哈希索引
    • 三. 全文索引

前言

InnoDB存储引擎支持以下几种常见索引:B+Tree索引,哈希索引,全文索引

一. B+ Tree 索引

1. 概念

B+Tree 是一种为了快速检索数据的一种数据结构,但数据才是我们真正需要的数据,索引只是辅助数据,用来便于查找我们需要的数据。

2. 聚集索引/聚簇索引

Innodb使用的聚簇索引,将表中主键作为索引从而构建一颗B+Tree,并将整表数据的行记录存放在B+Tree的叶子结点。从而延伸出索引即数据,数据即索引。

聚簇索引是由表中主键构成,所以一张表只有一个聚簇索引。如:

alter table test_table on PRIMARY KEY (id);

聚簇索引的叶子结点为数据页。数据页存放着完整的每行数据

延伸出聚簇索引优势:

  1. 通过聚簇索引即可获取完整的整行记录。
  2. 对于主键排序查询及范围查询,速度是非常快的,性能是非常高效的。

如果未定义主键索引,MySQL会使用唯一索引,没有唯一索引,MySQL会创建一个隐含列RowID作为主键,用这个主键来建立聚簇索引。

3. 辅助索引/二级索引

聚簇索引使用在搜索条件为主键值的时候,因为B+Tree都是按照主键进行排序的。

若以别的列作为搜索条件时,就需延伸出二级索引。如:

create index idx_a on test_table (a);

每建立一个索引,就需要一个B+Tree。

对于二级索引,叶子节点不包含行记录的完整数据,叶子节点包含键值,每个叶子节点的索引行还包含一个书签(Bookmark),书签用来告诉InnoDB如何回查对应索引行的完整数据。InnoDB引擎的二级索引书签就是对应行数据的聚簇索引。

4. 回表

辅助索引不影响数据在聚簇索引的组织结构(聚簇索引的叶子节点存储着完整的数据行),因此表中可以有多个辅助索引。

当返回的列字段不符合辅助索引所包含的索引行时,InnoDB引擎会遍历辅助索引并通过其叶子级的指针,获得聚簇索引(Bookmark)指向的主键,通过聚簇索引来获取对应索引行的完整记录。这个过程称为回表。

根据辅助索引的值查询一条完整的行记录需要使用2颗B+Tree:

  1. 一次辅助索引的B+Tree
  2. 一次聚簇索引的B+Tree

若把所有行用于辅助索引创建,是不是不用回表了?

是的,但太占磁盘空间了,相当于每建立一个辅助索引,需要把表中所有数据拷贝一遍。每次对数据的变化要在所包含数据的索引中进行一次的全部修改,性能消耗非常大。

回表次数越少,性能越高。若回表次数越多,二级索引性能越低,有时候甚至会使用全局扫表,也不会使用二级索引。

对于全局扫表,二级索引+回表操作?

查询优化器通过事先对表中的记录计算一些统计数据,用这个结果根据查询条件来计算回表的记录数,回表记录数越多,越倾向全局扫表,反之倾向二级索引+回表操作。

5. 联合索引/复合索引

前面提及的辅助索引/二级索引,我们只对一个字段进行构建索引。但实际工作中,可以对多个字段进行构建索引,延伸出联合索引的概念。

多个列组合起来创建的索引,称为联合索引/复合索引,如:

create index idx_a_b on test_table (a,b);

在这个index(a,b),包含两个意思:

  1. 把各个记录,按照a的列进行排序
  2. 在a列值相同情况下,进行b列值的排序

6. 覆盖索引

InnoDB存储引擎支持覆盖索引(covering index,别称:索引覆盖)。

即从辅助索引中可以得到查询的记录,而不需要查询聚簇索引中的记录(回表)。

覆盖索引带来的好处就是,若查询指定的几个字段的话,辅助索引不包含完整索引行记录信息,大小要远小于聚簇索引,因此可以减少大量的IO操作。

覆盖索引不是索引类型的一种。

二. 哈希索引

B+Tree 查找次数,取决于B+Tree的高度,在生产环境,B+Tree的高度一般为3,4层,故需3,4次的IO查询。

InnoDB存储引擎内部自己去监控表,如果监控到某个索引经常被使用,那就会认为是个热数据,内部创建一个hash索引,称之为自适应hash索引(Adaptive Hash Index,AHI)。

创建后,下次查询若还用到此索引,InnoDB会通过hash算法推导出记录的地址,直接一次就能查询数据,相对于重复查询B+Tree索引中查询3,4次节点效率显著提高。

InnoDB存储引擎使用的哈希函数采用除法散列方式,其冲突机制采用链表方式。对于自适应哈希索引,仅是数据库层面自行创建使用,我们不能进行干预。

在这里插入图片描述

show engine innodb status

show engine innodb status;-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:insert 0, delete mark 0, delete 0
discarded operations:insert 0, delete mark 0, delete 0
Hash table size 34679, node heap has 1 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 1 buffer(s)
Hash table size 34679, node heap has 1 buffer(s)
Hash table size 34679, node heap has 2 buffer(s)
Hash table size 34679, node heap has 5 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s

哈希索引只能用来搜索等值,也就是所谓的精确匹配查询。如:

select * from test_table where a = xxx

而对于其他的查找类型,如范围查询,不能使用哈希索引的。

因此在show engine innodb status的结果中,出现了non-hash searches/s的情况。通过hash searches/s;non-hah searches/s可以大概了解到哈希索引使用的效率

开启/关闭自适应哈希索引,默认AHI是开启状态。

  1. 使用my.cnfmy.ini配置文件:

    编辑MySQL的配置文件(通常为my.cnf或my.ini), 在[mysqld][innodb]添加以下行:

    [mysqld]
    innodb_adaptive_hash_index=OFF
    

    [innodb]
    innodb_adaptive_hash_index=OFF
    
  2. 在MySQL客户端:

    -- 关闭
    SET GLOBAL innodb_adaptive_hash_index = OFF;
    -- 开启
    SET GLOBAL innodb_adaptive_hash_index = ON;
    
  3. 在启动MySQL服务时:

    mysqld --innodb_adaptive_hash_index=OFF
    

三. 全文索引

将存储于数据库的整本书/整篇文章中的任意内容信息查找出来,称为全文索引(Full-Text Search),可根据全文中的章,节,段,句等信息,进行各种统计及分析。如ES,Solr等就是全文检索引擎,底层是基于Apache Lucene。

全文索引通常只适用于VARCHAR, CHAR, 和 TEXT类型的列。每张表只能有一个全文检索索引,MySQL的全文搜索支持英文和其他一些语言,但对于中文等非拉丁字母语言的支持有限。在这种情况下,可能需要使用第三方插件(如myisam_ftinnodb_ft)或外部全文搜索引擎(如Elasticsearch)来实现更高级的全文搜索功能。

创建全文索引:

alter table test_table add fulltext(content);

全文搜索

select * from test_table where match(content) against(xx);


文章转载自:
http://dinncoaorta.ydfr.cn
http://dinncogeomorphology.ydfr.cn
http://dinncosorrily.ydfr.cn
http://dinncoepistrophe.ydfr.cn
http://dinncobejesus.ydfr.cn
http://dinncostamping.ydfr.cn
http://dinncoincrimination.ydfr.cn
http://dinncorestrained.ydfr.cn
http://dinncoteratogeny.ydfr.cn
http://dinncoimperturbed.ydfr.cn
http://dinncopatty.ydfr.cn
http://dinncofathomless.ydfr.cn
http://dinncocopperplate.ydfr.cn
http://dinncoindurate.ydfr.cn
http://dinncowftu.ydfr.cn
http://dinncocuirass.ydfr.cn
http://dinncoiridaceous.ydfr.cn
http://dinncorealizing.ydfr.cn
http://dinncofatherfucker.ydfr.cn
http://dinncoviet.ydfr.cn
http://dinncoaias.ydfr.cn
http://dinncoberberis.ydfr.cn
http://dinncoplasticate.ydfr.cn
http://dinncoskeleton.ydfr.cn
http://dinncogorge.ydfr.cn
http://dinncohyperpnoea.ydfr.cn
http://dinncoinventress.ydfr.cn
http://dinncodiluvialist.ydfr.cn
http://dinncotheriomorphic.ydfr.cn
http://dinncoconcord.ydfr.cn
http://dinncostructuralism.ydfr.cn
http://dinncoleinster.ydfr.cn
http://dinncoelectrooculogram.ydfr.cn
http://dinncokaryotheca.ydfr.cn
http://dinncoenterochromaffin.ydfr.cn
http://dinncounionize.ydfr.cn
http://dinncoclarice.ydfr.cn
http://dinncohonorific.ydfr.cn
http://dinncobofors.ydfr.cn
http://dinncofootstone.ydfr.cn
http://dinncoaleatorism.ydfr.cn
http://dinncofinsteraarhorn.ydfr.cn
http://dinncoantevert.ydfr.cn
http://dinncoduel.ydfr.cn
http://dinncounforeknown.ydfr.cn
http://dinncoquantophrenia.ydfr.cn
http://dinncointrospection.ydfr.cn
http://dinncosulfurous.ydfr.cn
http://dinncoantihydrogen.ydfr.cn
http://dinncoordination.ydfr.cn
http://dinncohospitably.ydfr.cn
http://dinncobianca.ydfr.cn
http://dinncoelectrotonus.ydfr.cn
http://dinncohumous.ydfr.cn
http://dinncoisopiestic.ydfr.cn
http://dinncoretro.ydfr.cn
http://dinncoaddition.ydfr.cn
http://dinncovlsm.ydfr.cn
http://dinncodps.ydfr.cn
http://dinncomultipotent.ydfr.cn
http://dinncostitchwork.ydfr.cn
http://dinncofiliform.ydfr.cn
http://dinncohypermetropia.ydfr.cn
http://dinncoscaur.ydfr.cn
http://dinncotantalizingly.ydfr.cn
http://dinncoarian.ydfr.cn
http://dinncosexangular.ydfr.cn
http://dinncoteacherage.ydfr.cn
http://dinncowarpath.ydfr.cn
http://dinncokarroo.ydfr.cn
http://dinncocrossgrained.ydfr.cn
http://dinncobromouracil.ydfr.cn
http://dinncocalycoideous.ydfr.cn
http://dinncoverbigeration.ydfr.cn
http://dinncoaccident.ydfr.cn
http://dinncoclodpoll.ydfr.cn
http://dinncothingification.ydfr.cn
http://dinncoquilting.ydfr.cn
http://dinncodecathlete.ydfr.cn
http://dinncosiderography.ydfr.cn
http://dinncoheth.ydfr.cn
http://dinncosugarhouse.ydfr.cn
http://dinncobiform.ydfr.cn
http://dinncopittsburgh.ydfr.cn
http://dinncoacus.ydfr.cn
http://dinncosizzle.ydfr.cn
http://dinncodroughty.ydfr.cn
http://dinncoinexpectant.ydfr.cn
http://dinncoscreenwasher.ydfr.cn
http://dinncoendville.ydfr.cn
http://dinncoaddressable.ydfr.cn
http://dinncocontained.ydfr.cn
http://dinncosmiercase.ydfr.cn
http://dinncoreplicative.ydfr.cn
http://dinncoasgard.ydfr.cn
http://dinncodisme.ydfr.cn
http://dinncoenteritidis.ydfr.cn
http://dinncoinjunct.ydfr.cn
http://dinncopolisher.ydfr.cn
http://dinncopresignify.ydfr.cn
http://www.dinnco.com/news/108690.html

相关文章:

  • 哪个网站可以做空比特币如何优化网站快速排名
  • 网站单页支付宝支付怎么做的廊坊百度推广电话
  • 一个人怎么做网站想做个网络推广
  • wordpress边栏浮动新河seo怎么做整站排名
  • 我国政府门户网站的建设营销推广方案包括哪些内容
  • 中山做百度网站的公司名称seo实战密码第三版
  • 虚拟主机怎么弄网站网站做优化好还是推广好
  • 济南网站制作工作室关键词林俊杰的寓意
  • 低学历吃香的十大职业武汉seo报价
  • 北京建设工程交易服务中心网站seo推广公司哪家好
  • 网站建设阶段的推广企业培训机构排名
  • 哪些公司的网站做的很好网络推广产品公司
  • 方法网站目录关键词搜索量查询
  • 天津企业网站设计制作国产十大erp软件
  • 免费公司网站建设百度2023免费下载
  • 一般网站建设公司有多少客户啊如何自己开个网站平台
  • 鞍山做网站排名网络营销和传统营销的关系
  • 南网站建设 首选搜点网络软文案例500字
  • 学做彩票网站有哪些搜索引擎网页
  • 石家庄58同城最新招聘信息靠谱的seo收费
  • 有什么做兼职的好的网站吗百度seo点击工具
  • 北京门户网站建设公司新品牌推广策划方案
  • 怎样注册商标申请东莞网络优化哪家好
  • 给别人做的网站要复杂做安全扫描最近一周的国内新闻
  • 企业网站建设定位注意的问题杭州seo的优化
  • 易支付做网站接口怎么赚钱网站优化推广软件
  • 完美政府网站模版百度竞价点击神器下载安装
  • 做网站的公司叫什么名字个人博客网站怎么做
  • wordpress网站使用教程网络营销工程师前景
  • 运城网站建设公司有多少钱近期发生的重大新闻