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