性能優(yōu)化
表的設計合理化加叁,符合三大范式(3NF)
1NF是對屬性的原子性約束,要求屬性(列)具有原子性唇撬,不可再分解它匕;(只要是關(guān)系型數(shù)據(jù)庫都滿足1NF)
2NF是對記錄的惟一性約束,要求記錄有惟一標識局荚,即實體的惟一性超凳;
3NF是對字段冗余性的約束,它要求字段沒有冗余耀态。 沒有冗余的數(shù)據(jù)庫設計可以做到轮傍。
添加適當索引(index) [四種: 普通索引、主鍵索引首装、唯一索引unique创夜、全文索引]
較頻繁的作為查詢條件字段應該創(chuàng)建索引;
唯一性太差的字段不適合單獨創(chuàng)建索引仙逻,即使頻繁作為查詢條件驰吓;
更新非常頻繁的字段不適合創(chuàng)建索引
不會出現(xiàn)在WHERE子句中的字段不該創(chuàng)建索引
分表技術(shù)(水平分割、垂直分割)系奉;
讀寫[寫: update/delete/add]分離檬贰;
存儲過程 [模塊化編程,可以提高速度]缺亮;
對mysql配置優(yōu)化 [配置最大并發(fā)數(shù)my.ini, 調(diào)整緩存大小 ]翁涤;
mysql服務器硬件升級;
定時的去清除不需要的數(shù)據(jù),定時進行碎片整理(MyISAM)。
SQL語句優(yōu)化
通過show status命令了解各種SQL的執(zhí)行頻率葵礼;
定位執(zhí)行效率較低的SQL語句-(重點select号阿;
通過explain分析低效率的SQL;
確定問題并采取相應的優(yōu)化措施鸳粉。
添加索引
索引主要可以分為以下幾種:
主鍵索引扔涧,主鍵自動的為主索引 (類型Primary);
唯一索引 (UNIQUE)届谈;
普通索引 (INDEX)枯夜;
全文索引 (FULLTEXT) [適用于MyISAM] ——》sphinx + 中文分詞 coreseek [sphinx 的中文版 ];
綜合使用=>復合索引
可能使用到索引
對于創(chuàng)建的多列索引艰山,只要查詢條件使用了最左邊的列卤档,索引一般就會被使用。
對于使用like的查詢程剥,查詢?nèi)绻?‘%aaa’ 不會使用到索引, ‘a(chǎn)aa%’ 會使用到索引汤踏。
不使用索引
如果條件中有or织鲸,即使其中有條件帶索引也不會使用。
對于多列索引溪胶,不是使用的第一部分搂擦,則不會使用索引。
like查詢是以%開頭
如果列類型是字符串哗脖,那一定要在條件中將數(shù)據(jù)使用引號引用起來瀑踢。否則不使用索引。(添加時,字符串必須’’)
如果mysql估計使用全表掃描要比使用索引快才避,則不使用索引橱夭。