mysql建表需要注意什么

本篇文章和大家了解一下MySQL建表需要注意什么。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。

一、mysql各個(gè)名稱

庫名、表名、字段名全部使用小寫字母,用'_'下劃線分割,且名字長度不超過12,做到見名知意。

二、使用Inoodb存儲(chǔ)引擎

    1. 是否要支持事務(wù),如果要請(qǐng)選擇innodb,如果不需要可以考慮MyISAM;

    2. 如果表中絕大多數(shù)都只是讀查詢,可以考慮MyISAM,如果既有讀寫也挺頻繁,請(qǐng)使用InnoDB。

    3. 系統(tǒng)奔潰后,MyISAM恢復(fù)起來更困難,能否接受;

    4. MySQL5.5版本開始Innodb已經(jīng)成為Mysql的默認(rèn)引擎(之前是MyISAM),說明其優(yōu)勢(shì)是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不會(huì)差。


三、字段類型選擇

    1. 建議所有的表都有一個(gè)自增id,這個(gè)id可以經(jīng)常作為主鍵。

    2. 存儲(chǔ)非負(fù)數(shù)用unsigned。因?yàn)橥瑯拥淖止?jié)數(shù),存儲(chǔ)的數(shù)值范圍更大,如tinyint,有符號(hào)為 -128-127,無符號(hào)為 0-255。

    3. 整形定義中不加長度,直接用int,而不是int(n)。其實(shí)這里的n不是存儲(chǔ)長度的意思,比如int(3)默認(rèn)顯示3位,空格補(bǔ)齊,超出時(shí)正常顯示。

    4. 存儲(chǔ)取值范圍在0-80的數(shù)值時(shí),用tinyint unsigned。

    5. 明白varchar(n)中的n指的是字符數(shù)而不是字節(jié)數(shù)。

    6. 字符集選擇utf8

    7. timestamp和datetime都是精確到秒,優(yōu)先選擇timestamp,因?yàn)閠imestamp只有4個(gè)字節(jié),而datetime8個(gè)字節(jié)。同時(shí)timestamp具有自動(dòng)賦值以及自動(dòng)更新的特性。

    8. 如果可能,所有字段最好都用not null。因?yàn)椋簄ull字段被索引,需要額外的1字節(jié);使索引,索引統(tǒng)計(jì),值的比較變得更復(fù)雜。所以如果是索引字段,一定要定義為not null,null值可用0,''代替。

四、建立索引需要注意

    1. 索引名稱必須使用小寫

    2. 普通索引按照“idx_字段名稱”進(jìn)行命名,唯一索引按照“uniq_字段名稱”進(jìn)行命名

    3. 索引中的字段數(shù)建議不超過5個(gè)。單張表的索引數(shù)量控制在5個(gè)以內(nèi)。InnoDB使用b+tree來存儲(chǔ),因此在update、delete、insert的時(shí)候需要對(duì)b+tree進(jìn)行調(diào)整,過多的索引會(huì)減慢更新的速度。

    4. 唯一索引不和主鍵重復(fù)。

    5. 經(jīng)常作為where條件的字段要添加索引。order by,group by的字段建議添加索引。

    6. 使用explain判斷sql語句是否合理使用索引,盡量避免extra列出現(xiàn):Using File Sort,UsingTemporary。

    7. 合理創(chuàng)建聯(lián)合索引避免冗余,(a,b,c)相當(dāng)于(a)(a,b)(a,b,c),mysql有最左匹配原則。合理利用覆蓋索引。

五、sql語句

    1. 使用prepared statement,可以提供性能并且避免SQL注入。

    2. select語句只獲取需要的字段,不使用select *這種寫法。

    3. where條件中的非等值條件(in、between、<、<=、>、>=)會(huì)導(dǎo)致后面的條件使用不了索引。

    4. 避免在sql語句進(jìn)行數(shù)學(xué)運(yùn)算或者函數(shù)運(yùn)算,容易將業(yè)務(wù)邏輯和db耦合在一起。

    5. 避免使用存儲(chǔ)過程、觸發(fā)器、函數(shù)等,容易將業(yè)務(wù)邏輯和db耦合在一起,并且MySQL的存儲(chǔ)過程、觸發(fā)器、函數(shù)中存在一定的bug。

    6. 使用合理的sql語句減少與數(shù)據(jù)庫的交互次數(shù)。

    7. 統(tǒng)計(jì)表中記錄數(shù)時(shí)使用count(),而不是count(primary_key)和count(1)。

以上就是mysql建表需要注意什么的簡(jiǎn)略介紹,當(dāng)然詳細(xì)使用上面的不同還得要大家自己使用過才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道哦!

網(wǎng)站欄目:mysql建表需要注意什么
分享網(wǎng)址:http://www.muchs.cn/article18/ijcgdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序網(wǎng)頁設(shè)計(jì)公司、服務(wù)器托管商城網(wǎng)站、網(wǎng)站策劃、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)