您好,登錄后才能下訂單哦!
本篇文章和大家了解一下mysql建表需要注意什么。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
一、mysql各個名稱
庫名、表名、字段名全部使用小寫字母,用'_'下劃線分割,且名字長度不超過12,做到見名知意。
二、使用Inoodb存儲引擎
1. 是否要支持事務,如果要請選擇innodb,如果不需要可以考慮MyISAM;
2. 如果表中絕大多數都只是讀查詢,可以考慮MyISAM,如果既有讀寫也挺頻繁,請使用InnoDB。
3. 系統奔潰后,MyISAM恢復起來更困難,能否接受;
4. MySQL5.5版本開始Innodb已經成為Mysql的默認引擎(之前是MyISAM),說明其優勢是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不會差。
三、字段類型選擇
1. 建議所有的表都有一個自增id,這個id可以經常作為主鍵。
2. 存儲非負數用unsigned。因為同樣的字節數,存儲的數值范圍更大,如tinyint,有符號為 -128-127,無符號為 0-255。
3. 整形定義中不加長度,直接用int,而不是int(n)。其實這里的n不是存儲長度的意思,比如int(3)默認顯示3位,空格補齊,超出時正常顯示。
4. 存儲取值范圍在0-80的數值時,用tinyint unsigned。
5. 明白varchar(n)中的n指的是字符數而不是字節數。
6. 字符集選擇utf8
7. timestamp和datetime都是精確到秒,優先選擇timestamp,因為timestamp只有4個字節,而datetime8個字節。同時timestamp具有自動賦值以及自動更新的特性。
8. 如果可能,所有字段最好都用not null。因為:null字段被索引,需要額外的1字節;使索引,索引統計,值的比較變得更復雜。所以如果是索引字段,一定要定義為not null,null值可用0,''代替。
四、建立索引需要注意
1. 索引名稱必須使用小寫
2. 普通索引按照“idx_字段名稱”進行命名,唯一索引按照“uniq_字段名稱”進行命名
3. 索引中的字段數建議不超過5個。單張表的索引數量控制在5個以內。InnoDB使用b+tree來存儲,因此在update、delete、insert的時候需要對b+tree進行調整,過多的索引會減慢更新的速度。
4. 唯一索引不和主鍵重復。
5. 經常作為where條件的字段要添加索引。order by,group by的字段建議添加索引。
6. 使用explain判斷sql語句是否合理使用索引,盡量避免extra列出現:Using File Sort,UsingTemporary。
7. 合理創建聯合索引避免冗余,(a,b,c)相當于(a)(a,b)(a,b,c),mysql有最左匹配原則。合理利用覆蓋索引。
五、sql語句
1. 使用prepared statement,可以提供性能并且避免SQL注入。
2. select語句只獲取需要的字段,不使用select *這種寫法。
3. where條件中的非等值條件(in、between、<、<=、>、>=)會導致后面的條件使用不了索引。
4. 避免在sql語句進行數學運算或者函數運算,容易將業務邏輯和db耦合在一起。
5. 避免使用存儲過程、觸發器、函數等,容易將業務邏輯和db耦合在一起,并且MySQL的存儲過程、觸發器、函數中存在一定的bug。
6. 使用合理的sql語句減少與數據庫的交互次數。
7. 統計表中記錄數時使用count(),而不是count(primary_key)和count(1)。
以上就是mysql建表需要注意什么的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業資訊頻道哦!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。