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

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

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

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

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

我們從mysql本身來看:

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

2:MySQL中的NULL其實是占用空間的。

官方文檔說明:

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è)計表時 建議不要用default NULL

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

另外一點,從不同的項目開發(fā)去分析這個問題:

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

但是后來在另外一個團隊開發(fā)app的時候,這個null和empty string的問題就尤為突出,因為我是用php做接口開發(fā),如果一旦出現(xiàn)null的數(shù)據(jù)類型,沒有處理直接返回去前端,那么無論是ios還是Android端,如果沒有處理好這個空的判斷,要么就直接輸出null,要么程序直接報錯。

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

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

Mysql5.6.x

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

Mysql5.7.x

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

utf8

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

utf8mb4

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

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

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

所以一個記錄最多不能超過 8k。

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

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

總結(jié)

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

相關(guān)文章

最新評論

连云港市| 麻阳| 阜新市| 正安县| 灵台县| 华阴市| 武平县| 长泰县| 土默特右旗| 虎林市| 四子王旗| 新沂市| 通辽市| 贡觉县| 桐柏县| 射洪县| 金沙县| 十堰市| 霸州市| 行唐县| 沧源| 卫辉市| 房山区| 碌曲县| 贵港市| 云梦县| 上虞市| 阿坝县| 万盛区| 垦利县| 都兰县| 扬州市| 昌宁县| 定襄县| 宝丰县| 吉林省| 许昌县| 武宁县| 屏山县| 汽车| 静安区|