最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中varchar類型的字段默認(rèn)值設(shè)置方式

 更新時(shí)間:2023年10月18日 14:38:13   作者:Rsun04551  
這篇文章主要介紹了MySQL中varchar類型的字段默認(rèn)值設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQL varchar字段默認(rèn)值設(shè)置

最近開始給項(xiàng)目設(shè)計(jì)數(shù)據(jù)庫,遇到一個(gè)可能很多人都會(huì)遇到的問題,就是設(shè)定某一個(gè)字段的默認(rèn)值的時(shí)候,是設(shè)定null,“”,還是empty string呢?

我們從mysql本身來看:

1:空值(‘’)是不占用空間的

2:MySQL中的NULL其實(shí)是占用空間的。

官方文檔說明:

NULL columns require additional space in the row to record whether their values are NULL.

For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.

所以 mysql設(shè)計(jì)表時(shí) 建議不要用default NULL

  • string類型的可以default ''或者emptystring
  • int類型的可以default 0

另外一點(diǎn),從不同的項(xiàng)目開發(fā)去分析這個(gè)問題:

以前單純做web網(wǎng)頁端,對這個(gè)默認(rèn)值設(shè)定問題選用null 還是empty string。

但是后來在另外一個(gè)團(tuán)隊(duì)開發(fā)app的時(shí)候,這個(gè)null和empty string的問題就尤為突出,因?yàn)槲沂怯胮hp做接口開發(fā),如果一旦出現(xiàn)null的數(shù)據(jù)類型,沒有處理直接返回去前端,那么無論是ios還是Android端,如果沒有處理好這個(gè)空的判斷,要么就直接輸出null,要么程序直接報(bào)錯(cuò)。

所有建議設(shè)計(jì)數(shù)據(jù)庫的時(shí)候默認(rèn)值盡量少用null。

Mysql Varchar 類型為什么默認(rèn)設(shè)置 255?

Mysql5.6.x

在 Mysql5.6 版本下,單列索引的長度不能超過 767bytes,聯(lián)合索引的長度不能超過 3072bytes

Mysql5.7.x

在 Mysql5.7 版本下,單列索引的長度不能超過 3072bytes,聯(lián)合索引的長度不能超過 3072bytes

utf8

上面說到單列索引長度為 767,在 utf8 編碼下,一個(gè)字符為 3bytes,那么 255*3=765,剛好為能夠建立索引長度的最大值,如果超出了這個(gè)值,如果使用的是 navicat 那么 mysql 會(huì)自動(dòng)將這一列的索引變?yōu)榍熬Y索引,截取 255

utf8mb4

在 utf8mb4 下,一個(gè)字符為 4bytes, 那么 767÷4=191.75,取整為 191,所以在 utf8mb4 編碼下,如果你的 varchar 超出 191,如果使用的是 navicat 那么 mysql 會(huì)自動(dòng)將這一列的索引變?yōu)榍熬Y索引,截取 191

為什么聯(lián)合索引長度是 3072

我們知道 InnoDB 一個(gè) page 的默認(rèn)大小是 16k。由于是 Btree 組織,要求葉子節(jié)點(diǎn)上一個(gè) page 至少要包含兩條記錄(否則就退化鏈表了)。

所以一個(gè)記錄最多不能超過 8k。

又由于 InnoDB 的聚簇索引結(jié)構(gòu),一個(gè)二級索引要包含主鍵索引,因此每個(gè)單個(gè)索引不能超過 4k (極端情況,pk 和某個(gè)二級索引都達(dá)到這個(gè)限制)。

由于需要預(yù)留和輔助空間,扣掉后不能超過 3500,取個(gè) 整數(shù) 就是 1024*3=3072

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

宾川县| 荣昌县| 将乐县| 富蕴县| 南充市| 桂平市| 淄博市| 高邮市| 梁河县| 安陆市| 故城县| 道孚县| 神池县| 田阳县| 新干县| 靖远县| 雷山县| 隆尧县| 丰县| 开阳县| 青龙| 吐鲁番市| 车险| 甘洛县| 云和县| 金乡县| 波密县| 松桃| 宕昌县| 昌吉市| 楚雄市| 花莲县| 张家川| 昌都县| 台江县| 邹城市| 绩溪县| 永济市| 萨迦县| 新干县| 清水县|