MySQL數(shù)據(jù)庫(kù)對(duì)象的2個(gè)優(yōu)化技巧:場(chǎng)景分析、3步使用詳解!
(1)利用PROCEDURE ANALYSE()優(yōu)化表的數(shù)據(jù)類(lèi)型
1)場(chǎng)景分析
有時(shí)候,我們?cè)诙x表的字段類(lèi)型,或者長(zhǎng)度的時(shí)候,不確定應(yīng)該給出多長(zhǎng),因而,導(dǎo)致實(shí)際操作中會(huì)將長(zhǎng)度定義的有冗余,這樣會(huì)造成浪費(fèi)。而PROCEDURE ANALYSE()語(yǔ)句就是通過(guò)分析表的數(shù)據(jù),給出優(yōu)化建議。
2)具體使用步驟
***步:執(zhí)行如下命令:
- select * from `person` PROCEDURE ANALYSE();
第二步:結(jié)果展示為:
第三步:分析結(jié)果
比如第二行的結(jié)果可以看出:personnameMax_length為22.但是此表開(kāi)始設(shè)置時(shí)是45,這樣可以針對(duì)此字段的長(zhǎng)度進(jìn)行優(yōu)化
第四步:利用alert 對(duì)表進(jìn)行優(yōu)化。
- alter table person modify personname varchar(30);
(2)利用中間表提高統(tǒng)計(jì)查詢(xún)的效率
1)場(chǎng)景分析
如果我們有一張關(guān)于客戶(hù)的表,數(shù)據(jù)量非常大***別,而且是在線(xiàn)上運(yùn)行的數(shù)據(jù)庫(kù)實(shí)例中的表。此時(shí)我們需要進(jìn)行統(tǒng)計(jì)查詢(xún),如果直接查詢(xún)不但會(huì)對(duì)線(xiàn)上的表造成負(fù)面影響,而且效率不太高
2)利用中間表解決的辦法
***步:建立一張表結(jié)構(gòu)跟目標(biāo)表一樣的臨時(shí)表,這里以person表舉例,建立臨時(shí)表如下:
- create table temp_person(
- id int(11),
- personname varchar(45),
- age int(11),
- sex int(1)
- );
第二步:將要查詢(xún)的數(shù)據(jù)轉(zhuǎn)移到中間表中
- insert into temp_person select * from person where sex = 1;
第三步:基于中間表進(jìn)行查詢(xún)
- select sum(age) from person;
此號(hào)已發(fā)布80多篇,多個(gè)專(zhuān)題的技術(shù)文章,如:
【Java專(zhuān)題】、【Spring專(zhuān)題】
【Servlet專(zhuān)題】、【并發(fā)編程專(zhuān)題】
【Redis專(zhuān)題】、【BATJ面試題解析】
【Dubbo專(zhuān)題】、【Mybatis專(zhuān)題】
【Mysql優(yōu)化專(zhuān)題】(持續(xù)發(fā)布中)
大家關(guān)注此號(hào)后,便可閱讀以上系列文章!