1. 程式人生 > >MySQL使用規範(供參考)

MySQL使用規範(供參考)

這篇部落格是相對於開發者而言的,mysql我想是很多企業所鍾情的資料庫,對於高大尚的Oracle還是相對有些遜色,但是,畢竟是免費的,以下幾點是經驗之談,僅供參考。

一、    表設計類

強制類規範

    1. 建立表的儲存引擎必須是InnoDB。

    2. 每個表必須顯式的指定一個主鍵。

    3. 不允許使用聯合主鍵。

    4. 不允許使用外來鍵。

    5. 不允許存在和主鍵重複的索引。

    6. 自增長欄位必須是主鍵或唯一索引。

    7. 不允許在資料庫中儲存諸如圖片,影像之類的二進位制資料。

    8. 不允許使用TEXT型別欄位

    9. 建表時不允許顯式的指定除了utf8之外的其他字符集。

    10. 對於所有宣告為NOT NULL的欄位,必須顯式指定預設值。

    11. 必須包含時間戳欄位DataChange_LastTime,定義預設值為CURRENT_TIMESTAMP和on update CURRENT_TIMESTAMP,並新增索引。

建議類規範

    1. 建議使用自增長欄位作為主鍵。

    2. 對較長的字元型別,如果需要索引,則建立字首索引。

    3. 不建議在資料庫存放日誌。

    4. 建議將欄位都定義為not null。

    5. 選用能滿足需求的最小型別。

    6. 避免使用保留字命名DB物件。

    7. 對錶和欄位都新增備註說明。

二、    SQL類

強制類規範

    1. 禁止使用子查詢。

    2. 禁止使用select *,必須指定需要的欄位。

    3. update/delete只能單表操作,不允許多表關聯,不允許用子查詢,且一定要帶where條件。

    4. insert語句要顯式指定插入的列名,且不允許使用insert .... select的形式。

    5. 不允許使用儲存過程、儲存函式、觸發器和檢視。

    6. 單條查詢語句中,不允許出現多於一次的join。

    7. 不要在where後的篩選欄位上做運算。

建議類規範

    1. 儘量不要在資料庫裡做運算。

    2. 儘量不要做‘%’字首模糊查詢,如 like '%name'。

    3. 不要使用大偏移量的limit分頁。

    4. 連線MySQL不要設定成autocommit=0。

    5. 批量insert語句最好採用bulk insert的方法,如insert into table(xxx) values (xxx),(xxx)。

    6. update/delete儘量根據主鍵進行操作。

    7.  儘量減少count()的使用,尤其是用來頻繁獲取全表記錄數。

    8. 使用group by時,如無排序的需求,建議加order by null。

    9.  Join中使用的關聯欄位使用統一資料型別。