用了這么多年MySql,這些好習慣你用過哪些徒像?

一:新建表和字段建議:

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

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

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

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


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

  說明:3.1:NOT IN劈愚、!= 等負向條件查詢在有 NULL 值的情況下返回非空行的結(jié)果集

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

  3.3:當用count函數(shù)進行統(tǒng)計時菌羽,NULL 列不會計入統(tǒng)計

  3.4:因為NULL的列使得索引傅蹂,索引統(tǒng)計和值比較都更復雜,可為NULL的列會使用更多的存儲空間算凿,在mysql里也需要特殊處理,當可為NULL的列被索引時犁功,每個索引記錄需要一個額外的字節(jié)氓轰,如果計劃在列上建索引,應該避免將列設計為NULL浸卦。


4.每個表有自增列id且為主鍵署鸡,使用無符號類型unsigned,不作業(yè)務邏輯使用

  說明:4.1:避免存儲負值限嫌,且擴大了表示范圍

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


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

  例如:is_valid描沟,1.表示有效 0.表示無效


6.禁止使用mysql保留字,例如desc鞭光,range吏廉,match,action衰猛,add迟蜜,alter,all..等等

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


7.varchar是可變長字符串啡省,不預先分配存儲空間娜睛,長度不要超過5000,如果存儲長度大于此值卦睹,定義字段類型為text畦戒,獨立出來一張表,用主鍵來對應结序,避免影響其它字段索引效率


8.單表行數(shù) 超過500萬行或者表單容量超過2GB障斋,才推薦進行分庫分表


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


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

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


11.字段允許適當冗余,以提高查詢性能凛澎,冗余字段應遵循:1)不是頻繁修改的字段霹肝。2)不是varchar超長字段,更不能是text字段塑煎。


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


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


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


對象年齡區(qū)間類型字節(jié)表示范圍

人150之內(nèi)unsigned tinyint1無符號:0-255

龜數(shù)百歲unsigned smallint2無符號:0-65535

恐龍化石數(shù)千年unsigned int4無符號:0-42.9億

太陽約50億年unsigned bigint8無符號:0-約10的19次方


二:增刪改查好習慣


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


2.分頁查詢怜庸,當limit起點較高時当犯,可先用過濾條件進行過濾。如select f1,f2,f3 from table1 limit 20000,20;優(yōu)化為: select f1,f2,f3 from table1 where id>20000 limit 20


3.where條件里等號左右字段類型一致割疾,否則無法利用索引


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


5.插入列列表與值列表個數(shù)相同宏榕,上面二者的個數(shù)需要相同拓诸,如果沒有指定列列表,則值列表長度要與表列數(shù)相同麻昼。


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


7.更新抚芦,刪除語句記得隨手寫好where條件(你想刪庫嗎倍谜?哈哈)


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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叉抡,一起剝皮案震驚了整個濱河市尔崔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌褥民,老刑警劉巖您旁,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異轴捎,居然都是意外死亡,警方通過查閱死者的電腦和手機蚕脏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門侦副,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人驼鞭,你說我怎么就攤上這事秦驯。” “怎么了挣棕?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵译隘,是天一觀的道長亲桥。 經(jīng)常有香客問我,道長固耘,這世上最難降的妖魔是什么题篷? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮厅目,結(jié)果婚禮上番枚,老公的妹妹穿的比我還像新娘。我一直安慰自己损敷,他們只是感情好葫笼,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拗馒,像睡著了一般路星。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诱桂,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天洋丐,我揣著相機與錄音,去河邊找鬼访诱。 笑死垫挨,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的触菜。 我是一名探鬼主播九榔,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涡相!你這毒婦竟也來了哲泊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤催蝗,失蹤者是張志新(化名)和其女友劉穎切威,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丙号,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡先朦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了犬缨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喳魏。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖怀薛,靈堂內(nèi)的尸體忽然破棺而出刺彩,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布创倔,位于F島的核電站嗡害,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏畦攘。R本人自食惡果不足惜霸妹,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望念搬。 院中可真熱鬧抑堡,春花似錦、人聲如沸朗徊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爷恳。三九已至有缆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間温亲,已是汗流浹背棚壁。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留栈虚,地道東北人袖外。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像魂务,于是被迫代替她去往敵國和親曼验。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354