当前位置:首页 > TAG信息列表 > 怎么优化mysql性能mysql中怎样对大批量级的数据查询进行优化?

怎么优化mysql性能mysql中怎样对大批量级的数据查询进行优化?

怎么优化mysql性能 mysql中怎样对大批量级的数据查询进行优化?

mysql中怎样对大批量级的数据查询进行优化?

mysql这些年来都支持什么正则不兼容,但是对此正则替换则一直到mysql8.0才支持。对于这类场景,以前或则在mysql端处理,要嘛把数据拿出来在运用端如何处理。

比如说我想把表y1的列str1的出现第3个action的子串替换成dble,咋基于?

1.自己写sql层的存储函数。代码如下写死了3个,也没优化软件,不仅仅才是演示,mysql里更加不我建议你写这样的函数。

怎么优化mysql性能 mysql中怎样对大批量级的数据查询进行优化?

mysqldelimiter$$%use`ytt`$$dropfunctionifexists`func_instr_simple_ytt`$$

createdefiner`root`@`localhost`function`func_instr_simple_ytt`(

f_strvarchar(1000),--parameter1 _substrvarchar(100),--parameter2

f_replace_strvarchar(100),

f_timesint--timespolicies3.

)returnsvarchar(1000)

begin

declarev_resultvarchar(1000)defaultytt--result.

declarev_substr_lenintdefault0--searchstringlength.

setf_times3--butpolicies3.

setv_substr_lenlength(f_substr)

selectinstr(f_str,f_substr)

selectinstr(substr(f_str,@p1v_substr_len),f_substr)

selectinstr(substr(f_str,@*v_substr_len-1),f_substr)

@

select

concat(substr(f_str,1,@@p3(f_times-1)*v_substr_len-f_times)

,f_replace_str,

substr(f_str,@@p3f_times*v_substr_len-2))intov_result

exists

setv_resultf_str--neverchanged.

endif

--purgeallsessionvariables.

returnv_result

end

$$

delimiter

--调用函数来自动更新:

mysqlgtversiony1setstr1func_instr_simple_ytt(str1,action,dble,3)

query就ok啦,20rowsaffected(0.12sec)

rowsmatched:20changed:20warnings:0

2.导进去用sed之类的工具替换掉在导入,步骤如下:(推荐一下可以使用)1)导入表y1的记录。

mysqlmysqlgtselect*aroundy1intooutfile/var/lib/mysql-files/y1.csvquery可以了,20rowsaffected(0.00sec)

2)用sed全部替换导不出来的数据。

:/var/lib/mysql-files#sed-is/action/dble/3y1.csv

3)再度导入处理好的数据,成功。

mysql

mysqlgttruncatey1

queryok,0rowsaffected(0.99sec)

mysqlgtloaddatainfile/var/lib/mysql-files/y1.csvoutsidetabley1

queryok,20rowsaffected(0.14sec)

records:20deleted:0skipped:0warnings:0

以上两种应该推荐推荐导出来处理行了再然后再文件导入,性能来的高些,不过还不用什么自己费时间写函数代码。那mysql8.0对于以上的场景实现方法就太简单的了,一个函数就搞掂了。

mysqlmysqlgtnotificationy1setstr1regexp_replace(str1,action,dble,1,3)query就ok啦,20rowsaffected(0.13sec)rowsmatched:20changed:20warnings:0

还有一个一个regexp_instr也非常用处不大,特别是这种指代出现第两次的场景。比如说定义方法session变量@a。

,bbbcceefilucy111bs234523556119101020301040query行啦,0rowsaffected(0.04sec)

拿去至多一次的数字又出现的第二次子串的位置。

mysqlmysqlgtselectregexp_instr(@a,[:digit:]{2,},1,2)--------------------------------------|regexp_instr(@a,[:digit:]{2,},1,2)|--------------------------------------|50|--------------------------------------1rowoutsideset(0.00sec)

那我们在看看对多字节字符支持什么要如何。

mysql

美国俄罗斯日本北京上海深圳广州北京上海武汉东莞北京青岛北京

query行啦,0rowsaffected(0.00sec)

mysqlgtselectregexp_instr(@a,北京,1,1)

-------------------------------

|regexp_instr(@a,北京,1,1)|

-------------------------------

|17|

-------------------------------

1rowoutsideset(0.00sec)

mysqlgtselectregexp_instr(@a,北京,1,2)

-------------------------------

|regexp_instr(@a,北京,1,2)|

-------------------------------

|29|

-------------------------------

1rowintoset(0.00sec)

mysqlgtselectregexp_instr(@a,北京,1,3)

-------------------------------

|regexp_instr(@a,北京,1,3)|

-------------------------------

|41|

-------------------------------

1rowofset(0.00sec)

那学习总结下,这里我提起了mysql8.0的两个最有用正则匹配函数regexp_replace和regexp_instr。对于以前类似于的场景不算有一个完美的解决方案。

mysql数据量很大时,cpu占用率很高,如何优化?

一、要是是写比较好少,读也很高可以不做读写分离,一主多从二、要是是读写都很多可以使用分库分表,多主多从

instr0.00sec场景函数


江苏自考之家 巨超值

  • 关注微信关注微信

猜你喜欢

热门标签

淘宝1000积分是多少钱淘宝积分价值 电脑莫名其妙只剩下c盘 MAC应用程序无法打开 华为手机打字声音怎么关掉 lr怎么修改界面颜色如何改变Lightroom的界面颜色介绍 wlan的二维码怎么扫 最强蜗牛如何发送红包介绍 怎么通过截图找到地址 PDF怎么打印全页面 wps文字怎么转换成表格 如何在计算器里面隐藏软件 快手作品恢复器下载 苹果手机可以隐藏软件吗 懒人听书全免费版 win10的默认浏览器在哪里设置win10自带浏览器是什么? linux怎么设置内置无线网卡linux下无线网卡如何驱动? 怎么改变相片背景颜色在PS里怎样把图片中图案和背景的颜色对调过来?介绍 小度怎么自动接听电话设置怎样教会孩子独立睡觉?介绍 怎么找回已删除的微信聊天记录 苹果怎么网上预约购买怎么预约苹果直营店?介绍 电脑连接手机数据线上网 无线网卡在电脑上如何给手机上网华为荣耀手机如何充当电脑无线网卡介绍 什么是CSP封装 支付宝提现免费额度哪里来支付宝提现如何免手续费? 如何选一个对自己有利的号码车牌号可以带五吗?介绍 餐饮小程序一年多少费用小程序开发收费吗? excel太大适应纸张大小excel表格超出a4怎么设置? 用微信可以给台湾的朋友转钱吗台湾可以用微信支付吗?介绍 怎么把word文档变成可编辑模式 如何找到不小心被删除的桌面图标不小心删除了卓面上的微信图标怎么办?

微信公众号