資料庫設計方面優化
1、資料庫設計符合第三正規化,為了查詢方便可以有一定的資料冗餘。
2、選擇資料型別優先順序 int > date,time > enum,char>varchar > blob,選擇資料型別時,可以考慮替換,如ip位址可以用ip2long()函式轉換為unsign int型來進行儲存。
3、對於char(n)型別,在資料完整的情況下盡量較小的的n值。
4、在建表時用partition命令對單個表分割槽可以大大提公升查詢效率,mysql支援range,list,hash,key分割槽型別,其中以range最為常用,分割槽方式為:
create table tablenameengine innodb/myisam charset utf8 //選擇資料庫引擎和編碼
partition by range/list(column),//按範圍和預定義列表進行分割槽
partition partname values less than /in(n),//命名分割槽並詳細限定分割槽的範圍
5、選擇資料庫引擎時要注意innodb 和 myisam的區別。
儲存結構:myisam在磁碟上儲存成三個檔案。而innodb所有的表都儲存在同乙個資料檔案中,一般為2gb
事務支援:myisam不提供事務支援。innodb提供事務支援事務。
表鎖差異:myisam只支援表級鎖。innodb支援事務和行級鎖。
全文索引:myisam支援 fulltext型別的全文索引(不適用中文,所以要用sphinx全文索引引擎)。innodb不支援。
表的具體行數:myisam儲存有表的總行數,查詢count(*)很快。innodb沒有儲存表的總行數,需要重新計算。
外來鍵:myisam不支援。innodb支援
原文:
mysql常見的優化策略
sql的優化主要是圍繞著在查詢語句的時候盡量使用索引避免全表掃瞄。使用索引 對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。避免判斷null值 應盡量避免在 where 子句中對字段進行 null 值判斷 is null,is not null...
mysql常見的優化策略
sql的優化主要是圍繞著在查詢語句的時候盡量使用索引避免全表掃瞄。select id from t where num is null 可以在num上設定預設值0,確保表中num列沒有null值,然後這樣查詢 select id from t where num 0 mysql只對以下操作符才使用索...
mysql常見的SQL優化策略
1 避免全表掃瞄 對查詢進行優化應該盡量避免全表掃瞄,應該考慮在where和order by會涉及的列上新增索引。2 避免判斷null值 應該盡量避免where語句中進行null值判斷,否則會引起引擎放棄使用索引而進行全表掃瞄,例如select from table where num is nul...