有哪些常見的數(shù)據(jù)庫優(yōu)化方法?

性能優(yōu)化

表的設(shè)計(jì)合理化,符合三大范式(3NF)

1NF是對(duì)屬性的原子性約束,要求屬性(列)具有原子性,不可再分解;(只要是關(guān)系型數(shù)據(jù)庫都滿足1NF)

2NF是對(duì)記錄的惟一性約束,要求記錄有惟一標(biāo)識(shí),即實(shí)體的惟一性;

3NF是對(duì)字段冗余性的約束,它要求字段沒有冗余。 沒有冗余的數(shù)據(jù)庫設(shè)計(jì)可以做到。

添加適當(dāng)索引(index) [四種: 普通索引、主鍵索引、唯一索引unique、全文索引]

較頻繁的作為查詢條件字段應(yīng)該創(chuàng)建索引;

唯一性太差的字段不適合單獨(dú)創(chuàng)建索引,即使頻繁作為查詢條件;

更新非常頻繁的字段不適合創(chuàng)建索引

不會(huì)出現(xiàn)在WHERE子句中的字段不該創(chuàng)建索引

分表技術(shù)(水平分割、垂直分割);

讀寫[寫: update/delete/add]分離;

存儲(chǔ)過程 [模塊化編程,可以提高速度];

對(duì)mysql配置優(yōu)化 [配置最大并發(fā)數(shù)my.ini, 調(diào)整緩存大小 ];

mysql服務(wù)器硬件升級(jí);

定時(shí)的去清除不需要的數(shù)據(jù),定時(shí)進(jìn)行碎片整理(MyISAM)。

SQL語句優(yōu)化

通過show status命令了解各種SQL的執(zhí)行頻率;

定位執(zhí)行效率較低的SQL語句-(重點(diǎn)select;

通過explain分析低效率的SQL;

確定問題并采取相應(yīng)的優(yōu)化措施。

添加索引

索引主要可以分為以下幾種:

主鍵索引,主鍵自動(dòng)的為主索引 (類型Primary);

唯一索引 (UNIQUE);

普通索引 (INDEX);

全文索引 (FULLTEXT) [適用于MyISAM] ——》sphinx + 中文分詞 coreseek [sphinx 的中文版 ];

綜合使用=>復(fù)合索引

可能使用到索引

對(duì)于創(chuàng)建的多列索引,只要查詢條件使用了最左邊的列,索引一般就會(huì)被使用。

對(duì)于使用like的查詢,查詢?nèi)绻?‘%aaa’ 不會(huì)使用到索引, ‘a(chǎn)aa%’ 會(huì)使用到索引。

不使用索引

如果條件中有or,即使其中有條件帶索引也不會(huì)使用。

對(duì)于多列索引,不是使用的第一部分,則不會(huì)使用索引。

like查詢是以%開頭

如果列類型是字符串,那一定要在條件中將數(shù)據(jù)使用引號(hào)引用起來。否則不使用索引。(添加時(shí),字符串必須’’)

如果mysql估計(jì)使用全表掃描要比使用索引快,則不使用索引。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容