mysql性能優(yōu)化

一烟零、數(shù)據(jù)類型優(yōu)化

合適的數(shù)據(jù)類型以及存儲長度瘪松,不但節(jié)約數(shù)據(jù)庫表空間咸作、節(jié)約索引存儲,更重要的是提升檢索速度宵睦。

通常的標(biāo)準(zhǔn)是:

1.越小越好记罚。一般情況下,在能正確存儲數(shù)據(jù)的前提下壳嚎,使用最小的數(shù)據(jù)類型桐智。更小的數(shù)據(jù)類型意味著更快的速度,以及更小的磁盤空間烟馅、內(nèi)存说庭、CPU占用。

比如:人的年齡郑趁,最多三位數(shù)字刊驴,并且不會是負(fù)數(shù),可以使用unsigned tinyint(0-255)寡润。太陽的年齡使用int;

比如:使用timestamp類型要比datetime類型少一半的存儲空間

2.簡單就好捆憎,簡單的數(shù)據(jù)類型操作需要更少的CPU周期。能使用char的就不用varchar梭纹,能使用varchar就不用text和blob(不過公司的開發(fā)規(guī)范當(dāng)中不推薦讓使用blob和text)

3.盡量使用NOT NULL攻礼。在設(shè)計schema時,盡量指定一個字段的值為NOT NULL栗柒,mysql的NULL是占用存儲空間的,并且會降低索引的效率

二知举、索引優(yōu)化

索引對查詢速度的影響大瞬沦,正確認(rèn)識索引和創(chuàng)建索引,是數(shù)據(jù)庫性能調(diào)優(yōu)的起點(diǎn)雇锡。

一般索引加在where 逛钻、join、order by 后面出現(xiàn)的列上锰提。MySQL只對<曙痘,<=,=立肘,>边坤,>=,BETWEEN谅年,IN茧痒,以及某些時候的LIKE才會使用索引.。在以通配符%和_開頭作查詢時like是不用索引的融蹂。

例如下句會使用索引:

SELECT * FROM mytable WHERE username like'admin%'

而下句就不會使用:

SELECT * FROM mytable WHEREt Name like'%admin'

因此旺订,在使用LIKE時應(yīng)注意以上的區(qū)別弄企。

使用索引時,有以下一些技巧和注意事項:

索引不會包含有NULL值的列

只要列中包含有NULL值都將不會被包含在索引中区拳,復(fù)合索引中只要有一列含有NULL值拘领,那么這一列對于此復(fù)合索引就是無效的。所以我們在數(shù)據(jù)庫設(shè)計時不要讓字段的默認(rèn)值為NULL樱调。

使用短索引

對串列進(jìn)行索引约素,如果可能應(yīng)該指定一個前綴長度。例如本涕,如果有一個CHAR(255)的列业汰,如果在前10個或20個字符內(nèi),多數(shù)值是惟一的菩颖,那么就不要對整個列進(jìn)行索引样漆。短索引不僅可以提高查詢速度而且可以節(jié)省磁盤空間和I/O操作。在絕大多數(shù)應(yīng)用里晦闰,數(shù)據(jù)庫中的字符串?dāng)?shù)據(jù)大都以各種各樣的名字為主放祟,把索引的長度設(shè)置為10~15個字符已經(jīng)足以把搜索范圍縮小到很少的幾條數(shù)據(jù)記錄了。

索引列排序

MySQL查詢只使用一個索引呻右,因此如果where子句中已經(jīng)使用了索引的話跪妥,那么order by中的列是不會使用索引的。因此數(shù)據(jù)庫默認(rèn)排序可以符合要求的情況下不要使用排序操作声滥;盡量不要包含多個列的排序眉撵,如果需要最好給這些列創(chuàng)建復(fù)合索引。

like語句操作

一般情況下不鼓勵使用like操作落塑,如果非使用不可纽疟,如何使用也是一個問題。like “%aaa%” 不會使用索引而like “aaa%”可以使用索引憾赁。

不要在列上進(jìn)行運(yùn)算污朽、使用函數(shù)?、以及表達(dá)式

select * from users where YEAR(adddate)<2007; 將在每個行上進(jìn)行運(yùn)算龙考,這將導(dǎo)致索引失效而進(jìn)行全表掃描蟆肆,因此我們可以改成

select * from users where adddate<‘2007-01-01’;

select id from t where num/2=100,也會放棄使用索引晦款,應(yīng)該改成select id from t where num=100*2

不使用NOT IN和<>操作

對于not in炎功,可以用not exists或者(外聯(lián)結(jié)+判斷為空)來代替;

對于<>柬赐,用其它相同功能的操作運(yùn)算代替亡问,如a<>0 改為 a>0 or a<0

最后需要注意的是,索引也不是越多越好。大量的索引除了會占用存儲空間外州藕,也會降低insert以及delete的效率束世。

三、查詢優(yōu)化

1.建立索引床玻,提高查詢速度闷沥,參考上面內(nèi)容

2.避免使用or侣滩,or語句兩邊都不能使用索引,且是全表掃描⊥⒘#可使用 union all代替

3.in和not in也要慎用毯欣,可使用between和exist代替in

4.避免使用select * ?from ?tablename ?,用到哪些字段寫哪些字段

5.減少大結(jié)果集的group by 吃型,group by的字段也要加索引

6.子查詢也要慎用唧瘾,可以嘗試join方式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缨该,隨后出現(xiàn)的幾起案子偎行,更是在濱河造成了極大的恐慌,老刑警劉巖贰拿,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛤袒,死亡現(xiàn)場離奇詭異,居然都是意外死亡膨更,警方通過查閱死者的電腦和手機(jī)妙真,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荚守,“玉大人珍德,你說我怎么就攤上這事〈Q” “怎么了菱阵?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缩功。 經(jīng)常有香客問我,道長都办,這世上最難降的妖魔是什么嫡锌? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮琳钉,結(jié)果婚禮上势木,老公的妹妹穿的比我還像新娘。我一直安慰自己歌懒,他們只是感情好啦桌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般甫男。 火紅的嫁衣襯著肌膚如雪且改。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天板驳,我揣著相機(jī)與錄音又跛,去河邊找鬼。 笑死若治,一個胖子當(dāng)著我的面吹牛慨蓝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播端幼,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼礼烈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了婆跑?” 一聲冷哼從身側(cè)響起此熬,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洽蛀,沒想到半個月后摹迷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郊供,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年峡碉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驮审。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鲫寄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疯淫,到底是詐尸還是另有隱情地来,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布熙掺,位于F島的核電站未斑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏币绩。R本人自食惡果不足惜蜡秽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缆镣。 院中可真熱鬧芽突,春花似錦、人聲如沸董瞻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挟秤,卻和暖如春壹哺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背煞聪。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工斗躏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人昔脯。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓啄糙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親云稚。 傳聞我的和親對象是個殘疾皇子隧饼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容