日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

一:新建表和字段建議:

1.所有數(shù)據(jù)表和字段要有清晰的注釋,字段說明

說明:不管是創(chuàng)建者還是其他開發(fā)或者后續(xù)維護(hù)者都能清楚知道數(shù)據(jù)表和字段定義的含義

2.表名、字段名使用小寫字母或數(shù)字,禁止出現(xiàn)數(shù)字開頭

說明:MySQL在windows下不區(qū)分大小寫,但在linux下默認(rèn)是區(qū)分大小寫,為了避免出現(xiàn)不必要的麻煩,統(tǒng)一使用小寫

3.每個(gè)列都設(shè)置為not null(如果列為BLOB/TEXT類型的,則這個(gè)列不能設(shè)置為NOT NULL),且定義默認(rèn)值

說明:3.1:NOT IN、!= 等負(fù)向條件查詢?cè)谟?NULL 值的情況下返回非空行的結(jié)果集

3.2:使用 concat 函數(shù)拼接時(shí),首先要對(duì)各個(gè)字段進(jìn)行非 NULL 判斷,否則只要任何一個(gè)字段為空都會(huì)造成拼接的結(jié)果為 NULL

3.3:當(dāng)用count函數(shù)進(jìn)行統(tǒng)計(jì)時(shí),NULL 列不會(huì)計(jì)入統(tǒng)計(jì)

3.4:因?yàn)镹ULL的列使得索引,索引統(tǒng)計(jì)和值比較都更復(fù)雜,可為NULL的列會(huì)使用更多的存儲(chǔ)空間,在mysql里也需要特殊處理,當(dāng)可為NULL的列被索引時(shí),每個(gè)索引記錄需要一個(gè)額外的字節(jié),如果計(jì)劃在列上建索引,應(yīng)該避免將列設(shè)計(jì)為NULL。

4.每個(gè)表有自增列id且為主鍵,使用無(wú)符號(hào)類型unsigned,不作業(yè)務(wù)邏輯使用

說明:4.1:避免存儲(chǔ)負(fù)值,且擴(kuò)大了表示范圍

4.2:如果使用非自增主鍵(如果身份證號(hào)或?qū)W號(hào)等),由于每次插入主鍵的值近似于隨機(jī),因此每次新紀(jì)錄都要被插到現(xiàn)有索引頁(yè)得中間某個(gè)位置,此時(shí)MySQL不得不為了將新記錄插到合適位置而移動(dòng)數(shù)據(jù),甚至目標(biāo)頁(yè)面可能已經(jīng)被回寫到磁盤上而從緩存中清掉,此時(shí)又要從磁盤上讀回來,這增加了很多開銷,同時(shí)頻繁的移動(dòng)、分頁(yè)操作造成了大量的碎片,得到了不夠緊湊的索引結(jié)構(gòu),后續(xù)不得不通過OPTIMIZE TABLE來重建表并優(yōu)化填充頁(yè)面

5.表達(dá)是否概念的列,使用is_xxx的方式命名,數(shù)據(jù)類型使用unsigned tinyint(1表示是,0表示否)

例如:is_valid,1.表示有效 0.表示無(wú)效

6.禁止使用mysql保留字,例如desc,range,match,action,add,alter,all..等等

更多保留字可以參考mysql官方文檔說明:https://dev.mysql.com/doc/refman/5.7/en/keywords.html

7.varchar是可變長(zhǎng)字符串,不預(yù)先分配存儲(chǔ)空間,長(zhǎng)度不要超過5000,如果存儲(chǔ)長(zhǎng)度大于此值,定義字段類型為text,獨(dú)立出來一張表,用主鍵來對(duì)應(yīng),避免影響其它字段索引效率

8.單表行數(shù) 超過500萬(wàn)行或者表單容量超過2GB,才推薦進(jìn)行分庫(kù)分表

9.命令規(guī)范:主鍵索引名以pk_字段名;唯一索引名uk_字段名;普通索引名idx_字段名;臨時(shí)表則以tmp為前綴

10.小數(shù)類型為decimal,禁止使用float和double

說明:float和double的存儲(chǔ)的時(shí)候,存在精度損失的問題,很可能在值的比較時(shí),得到不正確的結(jié)果。如果存儲(chǔ)的數(shù)據(jù)范圍超過decimal的范圍,建議將數(shù)據(jù)拆成整數(shù)和小數(shù)分開存儲(chǔ)

11.字段允許適當(dāng)冗余,以提高查詢性能,冗余字段應(yīng)遵循:1)不是頻繁修改的字段。2)不是varchar超長(zhǎng)字段,更不能是text字段。

12.InnoDB和MyISAM存儲(chǔ)引擎表,索引類型選擇BTREE;MEMORY表可以根據(jù)需要選擇HASH或者BTREE類型索引。

13.在建立索引時(shí),多考慮建立聯(lián)合索引,并把區(qū)分度最高的字段放在最前面,這樣可以更高效檢索數(shù)據(jù)

14.合適的字符存儲(chǔ)長(zhǎng)度,不但節(jié)約數(shù)據(jù)庫(kù)表空間、節(jié)約索引存儲(chǔ),更重要的是提升檢索速度

用了這么多年MySQL,這些好習(xí)慣你用過哪些

 

二:增刪改查好習(xí)慣

1.SELECT語(yǔ)句指定具體字段名稱,禁止寫成*,select *會(huì)將不該讀的數(shù)據(jù)也從MySQL里讀出來,造成不必要的帶寬壓力

2.分頁(yè)查詢,當(dāng)limit起點(diǎn)較高時(shí),可先用過濾條件進(jìn)行過濾。如select f1,f2,f3 from table1 limit 20000,20;優(yōu)化為: select f1,f2,f3 from table1 where id>20000 limit 20

3.where條件里等號(hào)左右字段類型一致,否則無(wú)法利用索引

4.在多表join中,盡量選取結(jié)果集較小的表作為驅(qū)動(dòng)表,來join其他表

5.插入列列表與值列表個(gè)數(shù)相同,上面二者的個(gè)數(shù)需要相同,如果沒有指定列列表,則值列表長(zhǎng)度要與表列數(shù)相同。

6.更新刪除影響行數(shù)不要太大,如果太大,進(jìn)行細(xì)粒度拆分

7.更新,刪除語(yǔ)句記得隨手寫好where條件(你想刪庫(kù)嗎?哈哈)

歡迎大家補(bǔ)充,一起建立更優(yōu)雅的數(shù)據(jù)規(guī)范。

來源:https://www.cnblogs.com/peyshine/p/12928825.html

分享到:
標(biāo)簽:MySQL
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定