19个mysql性能优化要点解析(优化体系--详解MySQL)
19个mysql性能优化要点解析(优化体系--详解MySQL)
2024-10-01 09:52:13  作者:爱迩不后悔  网址: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方面的内容,感兴趣的朋友可以关注一下~


  • 私房烘焙都用什么淡奶油(4款韩裱奶油霜配方)
  • 2024-10-014款韩裱奶油霜配方奶油霜质地在很大程度上决定了裱花造型的成败,质地太软的奶油霜制作的花型容易化开,质地太硬容易在绞挤过程中导致裱花袋破裂下面小欧给大家列举了四款韩式裱花奶油霜的配方,一起来看看吧01英式奶油霜特点:符合。
  • 手机丢失了然后被关机了怎么办(手机丢失后最怕被关机)
  • 2024-10-01手机丢失后最怕被关机手机丢失后最怕被关机,怎样操作才能防止关机?很多人不知道,教你一招轻松解决!大家好,我是秦韵莞香,这个内容对你很重要,希望大家认真看完!当我们的手机不小心丢失后,用什么方法才能防止手机被别人恶意关机以。
  • 这b级车配14个音响比雅阁豪华(气场远超雅阁的B级车)
  • 2024-10-01气场远超雅阁的B级车B级车市场当今谁是销量王,早已经是毋庸置疑在失速门爆发之前,无论是销量还是口碑,雅阁基本上是占据着冠军的宝座而日系车能够占据大部分的家用级市场,除了本身的产品实力外,其实最主要的还是有着媒体夸大的成分。
  • 斑鸠是如何喂食的(随处可见的斑鸠能吃吗)
  • 2024-10-01随处可见的斑鸠能吃吗我家养了两只狗,这两只狗对快速移动的东西很感兴趣,尤其是遇到猫猫狗狗和鸟儿更是不得了,恨不得要立即追上它们和它们玩,好在有牵引绳的制约,才没有和它们发生冲突绝大多数情况下,猫猫狗狗和鸟儿们看到这里两只。
  • 辣椒油怎么洗掉(辣椒油弄到衣服上的清洗方法)
  • 2024-10-01辣椒油弄到衣服上的清洗方法用纸巾快速吸掉衣服上的油污,滴几滴洗洁精在辣椒油处,再进行搓洗,直至去除油渍即可直接在辣椒油处涂抹适量的松香水、香蕉水或汽油,然后放进3%的盐水里浸泡几分钟,再用清水漂洗干净取少许面粉调成糊状,涂在衣。
  • 联想手机黄金圣斗士如何刷机(联想黄金神斗士S8刷机经验谈)
  • 2024-10-01联想黄金神斗士S8刷机经验谈曾经用过1.7G版的联想黄金斗士S8,这款机器用千元的价格做出了旗舰机应有的流畅度,确实是联想手机中的佼佼者,只可惜原来哪部手机却被某人掳走,因此这次活动虽然比起一些网络上热潮的4G手机价格上没有优势。
  • 荒岛求生开始剧情(当荒岛求生的主角换成孩子会是怎样一番景象)
  • 2024-10-01当荒岛求生的主角换成孩子会是怎样一番景象哈喽大家好,我是你们专注于不专业的电影解说小麦~对于“荒岛求生”这个文学、影视作品模式,想必大家都不会陌生严格意义上讲,它是从“暴风雪山庄模式”延伸出来的一个分支,简言之就是一群人身处在一个相对封闭的。
  • 狗狗永远不会抛弃我们的故事(5个不离不弃的故事)
  • 2024-10-015个不离不弃的故事狗狗不仅仅是我们人类最好的朋友,它们往往在我们人生当中扮演着更重要的角色,会比你我都更要充满爱的勇气如果有一个功能可以去改变词典中一个单词的含义,我一定会将“狗狗”的定义从“家养的肉食哺乳动物”变更为。
  • 蒙古国地图超清版大图(蒙古国简介)
  • 2024-10-01蒙古国简介蒙古国地处亚洲中部的蒙古高原,东、南、西三面与中国接壤,北面同俄罗斯的西伯利亚为邻,幅员面积156.65万平方公里地形地貌蒙古国地质结构复杂,山脉多系火山岩构成,土层较厚,北部有冻土层,从北至南大体为。
  • 泯然众人矣的众是什么意思(众如何理解呢)
  • 2024-10-01众如何理解呢泯然众人矣的众释义:常人这句话意思是指人原来才华横溢,备受关注,后因才华尽失,不再受关注,变得和普通人一样了出自王安石《临川先生文集》的《伤仲永》:“又七年,还自扬州,复到舅家问焉,曰‘泯然众人矣’”。
  • 手上蜕皮是怎么回事(为什么手上蜕皮)
  • 2024-10-01为什么手上蜕皮部出现蜕皮,这种情况有可能是由于患者身体内有缺乏某些维生素的情况,从而导致这种现象的发生,或者也有可能是由于出现了先天性的疾病也有可能会造成这种情况的出现,建议当出现这种症状的时候,可以适当的补充一些。