一、合理設定字段
在設計表是有個原則,在保證業務的基礎上讓字段盡可能小,能用INT就别用BIGINT,因為mysql的innoDB引擎索引結構是B+樹,它的非葉子節點儲存的是索引和指針,節點容量是固定的(16k),指針大小也是固定的(6位元組),是以索引占用位元組越少,就能讓b+樹的節點儲存更多元素;
還有就是字段盡量設定成NOT NULL,這樣mysql在檢索資料的時候就會少做NULL判斷,進而更好地發揮索引效果。
二、合理設計表結構
其實就是三範式:
第一範式:屬性(字段)的原子性限制,要求屬性具有原子性,不可再分割;
比如個人資訊,個人資訊不能作為一個字段,它可以再分為name、age、sex等;
第二範式:記錄的惟一性限制,要求記錄有惟一辨別,每條記錄需要有一個屬性來做為實體的唯一辨別;
第三範式:字段備援性的限制,即任何字段不能由其他字段派生出來;主鍵沒有直接關系的資料列必須消除,消除的辦法就是再建立一個表來存放他們,當然外鍵除外;
當然,三範式隻是一個規範,實際生産中不一定必須遵循
比如公司資産清點表:名稱、單價、數量、總價;
這是違背了第三範式的,因為總價可以通過單價*數量得出
但是像這種結構我們是可以接受的,如果需要直接查詢總價,就不用再單獨計算,隻是多了一個字段而已;
三、合理利用索引
索引雖然能大幅度提升查詢效率,但是也有副作用:
1、額外增加索引檔案;
2、讀雖然快了,但是寫會變慢;
注意事項:
索引字段應盡可能的小,尤其是主鍵;
如果有組合索引,注意最左比對原則;
針對長字元串型字段,盡量用字首索引;
如果有二級索引,注意避免回表查詢;