久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 丹楓無跡 2022-03-23

一:新建表和字段建議:

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.每個列都設(shè)置為not null(如果列為BLOB/TEXT類型的,則這個列不能設(shè)置為NOT NULL),,且定義默認(rèn)值
  說明:3.1:NOT IN,、!= 等負(fù)向條件查詢在有 NULL 值的情況下返回非空行的結(jié)果集
  3.2:使用 concat 函數(shù)拼接時,首先要對各個字段進(jìn)行非 NULL 判斷,,否則只要任何一個字段為空都會造成拼接的結(jié)果為 NULL
  3.3:當(dāng)用count函數(shù)進(jìn)行統(tǒng)計時,,NULL 列不會計入統(tǒng)計
  3.4:因為NULL的列使得索引,索引統(tǒng)計和值比較都更復(fù)雜,,可為NULL的列會使用更多的存儲空間,,在mysql里也需要特殊處理,當(dāng)可為NULL的列被索引時,,每個索引記錄需要一個額外的字節(jié),,如果計劃在列上建索引,應(yīng)該避免將列設(shè)計為NULL,。
 
4.每個表有自增列id且為主鍵,,使用無符號類型unsigned,不作業(yè)務(wù)邏輯使用
  說明:4.1:避免存儲負(fù)值,,且擴(kuò)大了表示范圍
  4.2:如果使用非自增主鍵(如果身份證號或?qū)W號等),,由于每次插入主鍵的值近似于隨機(jī),因此每次新紀(jì)錄都要被插到現(xiàn)有索引頁得中間某個位置,,此時MySQL不得不為了將新記錄插到合適位置而移動數(shù)據(jù),,甚至目標(biāo)頁面可能已經(jīng)被回寫到磁盤上而從緩存中清掉,此時又要從磁盤上讀回來,,這增加了很多開銷,,同時頻繁的移動、分頁操作造成了大量的碎片,得到了不夠緊湊的索引結(jié)構(gòu),,后續(xù)不得不通過OPTIMIZE TABLE來重建表并優(yōu)化填充頁面
 
5.表達(dá)是否概念的列,,使用is_xxx的方式命名,數(shù)據(jù)類型使用unsigned tinyint(1表示是,,0表示否)
  例如:is_valid,,1.表示有效 0.表示無效
 
6.禁止使用mysql保留字,例如desc,,range,,match,action,,add,,alter,all..等等
  更多保留字可以參考mysql官方文檔說明:https://dev./doc/refman/5.7/en/keywords.html
 
7.varchar是可變長字符串,,不預(yù)先分配存儲空間,,長度不要超過5000,如果存儲長度大于此值,,定義字段類型為text,,獨立出來一張表,用主鍵來對應(yīng),,避免影響其它字段索引效率
 
8.單表行數(shù) 超過500萬行或者表單容量超過2GB,,才推薦進(jìn)行分庫分表
 
9.命令規(guī)范:主鍵索引名以pk_字段名;唯一索引名uk_字段名,;普通索引名idx_字段名,;臨時表則以tmp為前綴
 
10.小數(shù)類型為decimal,禁止使用float和double
  說明:float和double的存儲的時候,,存在精度損失的問題,,很可能在值的比較時,得到不正確的結(jié)果,。如果存儲的數(shù)據(jù)范圍超過decimal的范圍,,建議將數(shù)據(jù)拆成整數(shù)和小數(shù)分開存儲
 
11.字段允許適當(dāng)冗余,以提高查詢性能,,冗余字段應(yīng)遵循: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 tinyint
1
無符號:0-255
數(shù)百歲
unsigned smallint
2
無符號:0-65535
恐龍化石
數(shù)千年
unsigned int
4
無符號:0-42.9億
太陽
約50億年
unsigned bigint
8
無符號:0-約10的19次方
 

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

 
1.SELECT語句指定具體字段名稱,,禁止寫成*,,select *會將不該讀的數(shù)據(jù)也從MySQL里讀出來,造成不必要的帶寬壓力
 
2.分頁查詢,,當(dāng)limit起點較高時,,可先用過濾條件進(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條件里等號左右字段類型一致,,否則無法利用索引
 
4.在多表join中,,盡量選取結(jié)果集較小的表作為驅(qū)動表,來join其他表
 
5.插入列列表與值列表個數(shù)相同,,上面二者的個數(shù)需要相同,,如果沒有指定列列表,則值列表長度要與表列數(shù)相同,。
 
6.更新刪除影響行數(shù)不要太大,,如果太大,進(jìn)行細(xì)粒度拆分
 
7.更新,,刪除語句記得隨手寫好where條件(你想刪庫嗎,?哈哈)
 

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多