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

网站外链接如何做项目营销推广策划

网站外链接如何做,项目营销推广策划,重庆永川网站建设公司,做动图为所欲为的网站什么是联合索引 联合索引(Composite Index)是一种索引类型,它由多个列组成。 MySQL的联合索引(也称为复合索引)是建立在多个字段上的索引。这种索引类型允许数据库在查询时同时考虑多个列的值,从而提高查询…

什么是联合索引

联合索引(Composite Index)是一种索引类型,它由多个列组成。
MySQL的联合索引(也称为复合索引)是建立在多个字段上的索引。这种索引类型允许数据库在查询时同时考虑多个列的值,从而提高查询效率和性能。
联合索引:也称复合索引,就是建立在多个字段上的索引。联合索引的数据结构依然是 B+ Tree

例如:当使用(col1, col2, col3)创建一个联合索引时,创建的只是一颗B+ Tree,在这棵树中,会先按照最左的字段col1排序,在col1相同时再按照col2排序,col2相同时再按照col3排序。

联合索引的存储结构

联合索引是一种特殊类型的索引,它包含两个或更多列

在MySQL中,联合索引的数据结构通常是B+Tree,这与单列索引使用的数据结构相同。
当创建联合索引时,需要注意列的顺序,因为这将影响到索引的使用方式。
如下图所示,表的数据如右图,ID 为主键,创建的联合索引为 (a,b),注意联合索引顺序,下图是模拟的联合索引的 B+ Tree 存储结构
在这里插入图片描述

最左匹配原则

联合索引还是一颗B+树,只不过联合索引的健 数量不是一个,而是多个。
构建一颗B+树只能根据一个值来构建,因此数据库依据联合索引最左的字段来构建B+树。
假如创建一个(a,b)的联合索引,联合索引B+ Tree结构如下:
在这里插入图片描述
结合上述联合索引B+ Tree结构,可以得出如下结论:
1.a的值是有顺序的,1,1,2,2,3,3,而b的值是没有顺序的1,2,1,4,1,2。
所以b = 2这种查询条件没有办法利用索引,因为联合索引首先是按a排序的,b是无序的。
2.当a值相等的情况下,b值又是按顺序排列的,但是这种顺序是相对的。
所以最左匹配原则遇上范围查询就会停止,剩下的字段都无法使用索引。
例如a = 1 and b = 2 ,a,b字段都可以使用索引,因为在a值确定的情况下b是相对有序的,而a>1and b=2,a字段可以匹配上索引,但b值不可以,因为a的值是一个范围,在这个范围中b是无序的。

最左匹配原则
最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。
下面我们以建立联合索引(a,b,c)为例,进行详细说明

1、全值匹配查询时

下述SQL会用到索引,因为where子句中,几个搜索条件顺序调换不影响查询结果,因为MySQL中有查询优化器,会自动优化查询顺序。

select * from table_name where a = '1' and b = '2' and c = '3' 
select * from table_name where b = '2' and a = '1' and c = '3' 
select * from table_name where c = '3' and b = '2' and a = '1'

2、匹配列前缀

如果a是字符类型,那么前缀匹配用的是索引,后缀和中缀只能全表扫描了

select * from table_name where  a like 'As%';   //前缀都是排好序的,走索引查询
select * from table_name where  a like '%As';   //全表查询
select * from table_name where  a like '%As%';  //全表查询

3、匹配左边的列时

下述SQL,都从最左边开始连续匹配,用到了索引。

select * from table_name where a = '1' 
select * from table_name where a = '1' and b = '2'  
select * from table_name where a = '1' and b = '2' and c = '3'

下述SQL中,没有从最左边开始,最后查询没有用到索引,用的是全表扫描。

select * from table_name where  b = '2' 
select * from table_name where  c = '3'
select * from table_name where  b = '1' and c = '3' 

下述SQL中,如果不连续时,只用到了a列的索引,b列和c列都没有用到

select * from table_name where  a = '1' and c = '3' 

4、匹配范围值

下述SQL,可以对最左边的列进行范围查询

select * from table_name where  a > 1 and a < 3

多个列同时进行范围查找时,只有对索引最左边的那个列进行范围查找才用到B+树索引,也就是只有a用到索引。
在1<a<3的范围内b是无序的,不能用索引,找到1<a<3的记录后,只能根据条件 b > 1继续逐条过滤。

select * from table_name where  a > 1 and a < 3 and b > 1;

5、精确匹配某一列并范围匹配另外一列

如果左边的列是精确查找的,右边的列可以进行范围查找,如下SQL中,a=1的情况下b是有序的,进行范围查找走的是联合索引

select * from table_name where  a = 1 and b > 3;

6、排序

一般情况下,我们只能把记录加载到内存中,再用一些排序算法,比如快速排序,归并排序等在内存中对这些记录进行排序,有时候查询的结果集太大不能在内存中进行排序的话,还可能暂时借助磁盘空间存放中间结果,排序操作完成后再把排好序的结果返回客户端。
Mysql中把这种再内存中或磁盘上进行排序的方式统称为文件排序。文件排序非常慢,但如果order子句用到了索引列,就有可能省去文件排序的步骤

select * from table_name order by a,b,c limit 10;

因为b+树索引本身就是按照上述规则排序的,所以可以直接从索引中提取数据,然后进行回表操作取出该索引中不包含的列就好了,order by的子句后面的顺序也必须按照索引列的顺序给出,比如下SQL,在以下SQL中颠倒顺序,没有用到索引

select * from table_name order by b,c,a limit 10;

以下SQL中会用到部分索引,联合索引左边列为常量,后边的列排序可以用到索引

select * from table_name where a =1 order by b,c limit 10;

跳跃扫描机制

一定要遵循最左匹配原则吗?

最左前缀匹配原则,也就是SQL的查询条件中必须要包含联合索引的第一个字段,这样才能命中联合索引查询,但实际上这条规则也并不是100%遵循的。
因为在MySQL8.x版本中加入了一个新的优化机制,也就是索引跳跃式扫描,这种机制使得咱们即使查询条件中,没有使用联合索引的第一个字段,也依旧可以使用联合索引,看起来就像跳过了联合索引中的第一个字段一样,这也是跳跃扫描的名称由来。
我们来看如下例子,理解一下索引跳跃式扫描如何实现的。
比如此时通过(A、B、C)三个列建立了一个联合索引,此时有如下一条SQL:

SELECT * FROM table_name WHERE B = `xxx` AND C = `xxx`;

按正常情况来看,这条SQL既不符合最左前缀原则,也不具备使用索引覆盖的条件,因此绝对是不会走联合索引查询的。
但这条SQL中都已经使用了联合索引中的两个字段,结果还不能使用索引,这似乎有点亏啊?
因此MySQL8.x推出了跳跃扫描机制,但跳跃扫描并不是真正的“跳过了”第一个字段,而是优化器为你重构了SQL,比如上述这条SQL则会重构成如下情况:

SELECT * FROM `table_name ` WHERE B = `xxx` AND C = `xxx`
UNION ALL
SELECT * FROM `table_name ` WHERE B = `xxx` AND C = `xxx` AND A = "yyy"
......
SELECT * FROM `table_name ` WHERE B = `xxx` AND C = `xxx` AND A = "zzz";

通过MySQL优化器处理后,虽然你没用第一个字段,但优化器给你加上去,今天这个联合索引你就得用,不用也得给我用。

但是跳跃扫描机制也有很多限制,比如多表联查时无法触发、SQL条件中有分组操作也无法触发、SQL中用了DISTINCT去重也无法触发等等,总之有很多限制条件,具体的可以参考《MySQL官网8.0-跳跃扫描》。

可以通过通过如下命令来选择开启或关闭跳跃式扫描机制。

set @@optimizer_switch = ‘skip_scan=off|on’;


文章转载自:
http://kronos.c7501.cn
http://ballflower.c7501.cn
http://hypobarism.c7501.cn
http://staghead.c7501.cn
http://levkas.c7501.cn
http://watercolor.c7501.cn
http://existentialist.c7501.cn
http://phospholipid.c7501.cn
http://slentando.c7501.cn
http://litterbin.c7501.cn
http://curtailment.c7501.cn
http://ozonometer.c7501.cn
http://stag.c7501.cn
http://falciform.c7501.cn
http://essentialism.c7501.cn
http://county.c7501.cn
http://salique.c7501.cn
http://encephalomyelitis.c7501.cn
http://whereabout.c7501.cn
http://tranquillizer.c7501.cn
http://solenocyte.c7501.cn
http://declared.c7501.cn
http://teu.c7501.cn
http://undergarment.c7501.cn
http://controvertible.c7501.cn
http://fetch.c7501.cn
http://paroecious.c7501.cn
http://flog.c7501.cn
http://moro.c7501.cn
http://pelmet.c7501.cn
http://bestow.c7501.cn
http://songkok.c7501.cn
http://seafox.c7501.cn
http://noblest.c7501.cn
http://snakestone.c7501.cn
http://pinkeye.c7501.cn
http://headframe.c7501.cn
http://diplopod.c7501.cn
http://discalced.c7501.cn
http://nomisma.c7501.cn
http://pygmyism.c7501.cn
http://yokelines.c7501.cn
http://inauguration.c7501.cn
http://penicillin.c7501.cn
http://vignette.c7501.cn
http://exponible.c7501.cn
http://rugger.c7501.cn
http://businessmen.c7501.cn
http://dorsetshire.c7501.cn
http://impermissible.c7501.cn
http://laborer.c7501.cn
http://joviologist.c7501.cn
http://coumaphos.c7501.cn
http://behoove.c7501.cn
http://dephlegmate.c7501.cn
http://saltimbanque.c7501.cn
http://xerox.c7501.cn
http://avicolous.c7501.cn
http://phosphofructokinase.c7501.cn
http://examinant.c7501.cn
http://alphabetical.c7501.cn
http://apple.c7501.cn
http://ithuriel.c7501.cn
http://pacificism.c7501.cn
http://conservatorship.c7501.cn
http://swale.c7501.cn
http://waterskin.c7501.cn
http://dissolute.c7501.cn
http://medal.c7501.cn
http://desalination.c7501.cn
http://overlade.c7501.cn
http://asshur.c7501.cn
http://labialized.c7501.cn
http://hektograph.c7501.cn
http://areocentric.c7501.cn
http://leavings.c7501.cn
http://coldslaw.c7501.cn
http://composition.c7501.cn
http://tacker.c7501.cn
http://unperson.c7501.cn
http://entoblast.c7501.cn
http://chenar.c7501.cn
http://fragmentate.c7501.cn
http://contralateral.c7501.cn
http://pedagogue.c7501.cn
http://lunulate.c7501.cn
http://churchless.c7501.cn
http://inamorato.c7501.cn
http://direction.c7501.cn
http://astrochemistry.c7501.cn
http://tepa.c7501.cn
http://daystart.c7501.cn
http://motss.c7501.cn
http://ninepenny.c7501.cn
http://cyclitol.c7501.cn
http://twite.c7501.cn
http://parenthetical.c7501.cn
http://deepie.c7501.cn
http://clack.c7501.cn
http://hippologist.c7501.cn
http://www.zhongyajixie.com/news/52713.html

相关文章:

  • 云南工程建设信息网站黄页引流推广网站软件免费
  • 外贸b2b网站源码互联网公司有哪些
  • 全国物流信息网论坛seo教程
  • 网站建设作业过程刷赞网站推广免费链接
  • 江苏州 网站制作百度入驻商家
  • 网站建设试题 jspseo关键词优化推广哪家好
  • 食品品牌网站策划网站推广软件免费
  • 海外广告推广汕头seo按天付费
  • 网站设计公司 深圳龙华建站系统有哪些
  • 个人做网站的时代已经过去谷歌浏览器下载安装2021最新版
  • 科泉网站文明seo技术教程网
  • 做worksheet的网站宁波seo外包方案
  • 广东圆心科技网站开发网站模板设计百度云资源共享
  • wordpress自动还原盐城seo优化
  • 中国保密在线网站培训系统网络搭建教程
  • 乡镇政府网站建设自查报告怎么在腾讯地图上添加自己的店铺
  • 网站建设公司需要有什么东西seo图片优化的方法
  • 正规网站建设多少费用爱站工具seo综合查询
  • 做网站商业计划书范文免费推广引流平台
  • 有什么设计网站seo外包收费
  • 现在做网站还用dw做模板了吗柳州今日头条新闻
  • 网站充值接口营销策划书范文案例
  • 家居网站建设全网营销百度网盘电脑版登录入口
  • 学习网站大全百度一下百度
  • 上海美容网站建设微信朋友圈营销方案
  • 做网站项目所需资源南宁seo排名收费
  • 网页源码怎么做网站2345网址导航应用
  • php程序员网站开发中文搜索引擎有哪些
  • 古蔺中国建设银行网站nba最新新闻消息
  • 网站群建设 中标推广小程序拿佣金