19个mysql性能优化要点解析(优化体系--详解MySQL)
19个mysql性能优化要点解析(优化体系--详解MySQL)
2024-11-24 10:56:10  作者:爱迩不后悔  网址:https://m.xinb2b.cn/know/nna490580.html
概述

我们都知道where条件如果在字段上带了函数就不会去走索引,不好优化,无意间了解到mysql一个新特性--虚拟列,专门处理这块问题的,下面一起来了解下吧~

Generated Column

在MySQL 5.7中,支持两种Generated Column,即Virtual Generated Column和Stored Generated Column,前者只将Generated Column保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将Generated Column持久化到磁盘上,而不是每次读取的时候计算所得。很明显,后者存放了可以通过已有数据计算而得的数据,需要更多的磁盘空间,与Virtual Column相比并没有优势,因此,MySQL 5.7中,不指定Generated Column的类型,默认是Virtual Column。

如果需要Stored Generated Golumn的话,可能在Virtual Generated Column上建立索引更加合适。综上,一般情况下,都使用Virtual Generated Column,这也是MySQL默认的方式

语法

<type> [ GENERATED ALWAYS ] AS ( <expression> ) [ VIRTUAL|STORED ][ UNIQUE [KEY] ] [ [PRIMARY] KEY ] [ NOT NULL ] [ COMMENT <text> ]

应用场景

假设有一个表,其中包含一个 date 类型的列 `SimpleDate` date

SimpleDate 是一个常用的查询字段,并需要对其执行日期函数,例如

SELECt ... WHERe dayofweek(SimpleDate) = 3 ...

此时的问题是 即使对 SimpleDate 建立索引,这个查询语句也无法使用,因为日期函数阻止了索引。

为了提高查询效率,通常要进行额外的操作,例如新建一个字段 SimpleDate_dayofweek,存放 dayofweek(SimpleDate) 的计算结果,然后对这列创建索引,SimpleDate_dayofweek 的值需要程序写入,例如使用触发器,在 SimpleDate 有变动时更新这样查询就可以改为

3、构建姓名的虚拟列

alter table user add user_name varchar(20) generated always as (data->'$.name');


4、构建索引

alter table user add index idx_name(user_name);


5、测试是否用到索引

explain select * from user where user_name='"hwb"' \G;


可以看出用了索引了

6、插入新数据

此时的表的结构由于多出了user_name这一虚拟列,再插入别的数据要注意在表后指明插入列(不能给虚拟列插入数据)

insert into user(uid,data) values (NULL,'{"name":"test","address":"shantou"}');


做完发现这个实验好像不是那么好理解...应该对比一下加不加虚拟列有没走索引,可能会更容易让大家理解的...后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~


  • 生姜种植三大忌(盆栽大蒜的种植方法)
  • 2024-11-25盆栽大蒜的种植方法在中国餐桌上,大蒜可以说是不可或缺的佐料之一,因而很多人萌发了在家种植大蒜的想法大蒜的种植不算太难,不过要想保证它的健康生长还是需要多费心思的下面我们就从种子选取、种植方法及肥料施加三个方面具体给大家。
  • 创意团建活动游戏(趣味拓展创意游戏主题团建)
  • 2024-11-25趣味拓展创意游戏主题团建一天趣味团建——创意拓展活动纸飞机放飞梦想锁定目标我们将把纸飞机玩出新高度让你意想不到好好期待吧指压板忍痛前行与队友接力完成最短时间才能赢得最后优胜疯狂T恤“衣”气呵成你一定不知道T恤还能这么玩掌握技。
  • 末世圣人救劫录第九(末世圣人救劫录第九)
  • 2024-11-25末世圣人救劫录第九十殿阎君坐在大殿上,把一锦囊打开,其中有鬼魂无数众阎君取出鬼魂放入口中,大嚼起来,如同炒豆一般忽一看门小鬼来报:“外面闯入一英俊少年,不知何名,法力无边,众鬼将军抵挡不住!”正说间,一整香风袭来风到处。
  • 20岁女孩遗体被发现(7岁华人女孩遗体被找到)
  • 2024-11-257岁华人女孩遗体被找到这些天,7岁日本华人女孩南朝芽牵动着不少人的心不止是在日华人,不少国人也在转发下面这则寻人启事↓但近日悲伤的消息还是传来了...前后才10分钟7岁小女孩就失踪了...女孩失踪于9月23号,当天是日本的。
  • 滴滴专车免费为乘客提供矿泉水吗(滴滴专车上的免费矿泉水)
  • 2024-11-25滴滴专车上的免费矿泉水乘坐过滴滴专车的乘客都知道,车上备有矿泉水,供乘客免费饮用然而谁能想到,看上去高大上的免费矿泉水服务,竟然喝到尿!10月10日,上海的孙先生在乘坐滴滴专车时,竟喝到了带有尿液的水孙先生表示,滴滴礼橙专。
  • 票据买入规则(又有资金在实体之外玩空转)
  • 2024-11-25又有资金在实体之外玩空转本月来,短期票据转贴现利率一度逼近于零,引发市场高度关注30日,票据转贴现利率终于从“地板价”上爬起来,国股银票转贴现利率1月、3月相比29日出现61和34个BP的上升,带动一年期利率出现41个BP的。
  • 人生有许多的无奈(人生总有很多无奈)
  • 2024-11-25人生总有很多无奈人生总有很多无奈,很多时候,这些无奈又是你不得不面对的比如有些时间你不能专注,你必须和别人分享,虽然你很不情愿,这是因为你不是独立于世的人比如来到这世上,你必须承担很多角色,而且还必须演好这些角色;比。
  • 全新质感空间(轻新简)
  • 2024-11-25轻新简Banpu/北京双富丽建筑工程有限公司▽前厅/receptionarea“如何提升办公体验,释放活力,是我们设计考量的原始出发点--杨国庆,设计顾问关键字:轻、新、简、舒适、开放与私密“Howtoim。
  • 怎么查看组织机构代码失效日期(注意过渡期已过)
  • 2024-11-25注意过渡期已过市场监管总局办公厅关于进一步做好统一社会信用代码赋码工作的通知市监注发〔2021〕1号各省、自治区、直辖市及新疆生产建设兵团市场监管局(厅、委):为进一步做好统一社会信用代码(下称统一代码)管理,规范。
  • 爱的思念歌词(爱的祈祷歌词)
  • 2024-11-25爱的祈祷歌词曾经寻寻觅觅寻找爱也曾经糊里糊涂失去爱为什么该到的时候你没有来我为你等到花开花又败我为你等到北雁南飞寒霜一片白我大声呼唤你给我你的爱温暖怀抱快向我敞开我手捧玫瑰花跪向你表白你千呼万唤始出来接纳我的爱爱。
  • 江西景德镇洪涝灾情七月份(景德镇市珠山区)
  • 2024-11-25景德镇市珠山区央视网消息(记者熊赳赳)“过去我们这老鸦滩,年年内涝,这几天连下这么大的雨,却看不到什么积水,真是没有想到”6月20日的早晨,看着屋外的倾盆大雨,景德镇市珠山区市民刘先生不禁感慨道近日,随着景德镇市及。