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

MYSQL中varchar和TEXT的相關問題詳析

 更新時間:2022年12月15日 11:07:51   作者:Lee5488  
varchar 和 text 是 MySQL 字符存儲爭議比較多的領域,下面這篇文章主要給大家介紹了關于MYSQL中varchar和TEXT,文中介紹的非常詳細,需要的朋友可以參考下

起因

引發(fā)原因:門店需求新增自提門店,自提門店需要加自提點圖片,在渠道店上引入了圖片地址img_url 的字段,字段值定義為text not null 但是因為text字段不能設置默認值,所以未設置默認值;

上線時候先上線了數(shù)據(jù)庫字段,代碼還未上線,線上新增渠道店的時候導致該字段為null所以不能新增渠道店報錯。

解決方案:后緊急工單更改了img_url字段設置字段類型為varchar(2000) 默認值為'' 線上可以新增渠道店;

問題分析:text和varchar

根據(jù)阿里巴巴開發(fā)手冊嵩山版 MySQL 數(shù)據(jù)庫篇

建表規(guī)約第八條:

【強制】 varchar 是可變長字符串,不預先分配存儲空間,長度不要超過 5000,如果存儲長度

大于此值,定義字段類型為 text ,獨立出來一張表,用主鍵來對應,避免影響其它字段索引效

第十三條:

 【推薦】字段允許適當冗余,以提高查詢性能,但必須考慮數(shù)據(jù)一致。冗余字段應遵循:

1) 不是頻繁修改的字段。

2) 不是唯一索引的字段。

3) 不是 varchar 超長字段,更不能是 text 字段。

正例:各業(yè)務線經(jīng)常冗余存儲商品名稱,避免查詢時需要調用 IC 服務獲取。

ORM 映射

第一條:

【強制】在表查詢中,一律不要使用 * 作為查詢的字段列表,需要哪些字段必須明確寫明。

說明:1)增加查詢分析器解析成本。2)增減字段容易與 resultMap 配置不一致。3)無用字段增加網(wǎng)絡

消耗,尤其是 text 類型的字段。

mysql的官方文檔

mysql的官方文檔上寫了varchar類型最長可以指定為65535字節(jié),

但我們建表的時候,實際上因為指定了字符集的問題,如果是在utf8的字符編碼下,實際上最大的長度只能為 21845,因為utf8一個字符占3個字節(jié)

utf8編碼下
Column length too big for column 'varchar1' (max = 21845); use BLOB or TEXT instead
 
utf8-mb4編碼下
 Column length too big for column 'varchar1' (max = 16383); use BLOB or TEXT instead
 
 但是其實65535的限制是在一行數(shù)據(jù)里面限制的總數(shù)為65535,即:
 如果我們有門店表:貨號指定為21845長度,品名指定為21845長度,還是不能建表成功,因為65535的限制是一行的所有字段值加起來的限制。
 (此處不僅限制varchar,是除了BLOBs的類型都會被限制)
 會出現(xiàn)如下報錯:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. 
 This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

TEXT數(shù)據(jù)類型

可以存儲1-4GB字節(jié)長度,MySQL并不把TEXT數(shù)據(jù)存儲在內(nèi)存中,而是存儲與磁盤中,所以MySQL每次必須從磁盤讀取,導致它比varchar要慢

TINYTEXT 255字節(jié) (2KB)

TEXT 65,535字節(jié) (64KB)

MEDIUMTEXT 16,777,215字節(jié)(16M)

LONGTEXT 4,294,967,295字節(jié)(4GB)

附:MYSQL中varchar和TEXT差異點

text 字段,MySQL不允許有默認值。建立索引必須給出前綴索引長度。

varchar 允許有默認值,對索引長度沒限制。

注:InnoDB 引擎單一字段索引的默認長度最大為 767 字節(jié),MyISAM 為 1000 字節(jié)。例如字符編碼是 utf8,那么 varchar 的索引最大長度是 256 個字符。超出限制會導致索引創(chuàng)建不成功,轉而需要創(chuàng)建前綴索引。設置InnoDB_large_prefix = 1 可以增大限制,允許索引使用動態(tài)壓縮,但是表的 row_format 必須是 compressed 或者 dynamic??梢允顾饕虚L度大于767bytes,但是總長度不能大于 3072 bytes。

總結:

varchar字段可以設置,但不要超過5000長度

text字段可以使用,但如果非必要應盡量避免,可以采用獨立表對應

到此這篇關于MYSQL中varchar和TEXT的文章就介紹到這了,更多相關MYSQL varchar和TEXT內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • mysql下修改engine引擎的方法

    mysql下修改engine引擎的方法

    修改mysql的引擎為INNODB,可以使用外鍵,事務等功能,性能高。
    2011-08-08
  • MySQL常用的日期時間函數(shù)匯總(附實例)

    MySQL常用的日期時間函數(shù)匯總(附實例)

    日期時間處理對大家來說應該都不陌生了,下面這篇文章主要給大家介紹了關于MySQL常用的日期時間函數(shù),文中通過圖文介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友可以參考下
    2023-03-03
  • MySQL8.0高可用MIC的實現(xiàn)

    MySQL8.0高可用MIC的實現(xiàn)

    本文介紹了如何實現(xiàn)MySQL8.0高可用MIC,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-10-10
  • SQL update多表關聯(lián)更新方法解讀

    SQL update多表關聯(lián)更新方法解讀

    這篇文章主要介紹了SQL update 多表關聯(lián)更新方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • mysql函數(shù)之常見數(shù)學函數(shù)示例詳解

    mysql函數(shù)之常見數(shù)學函數(shù)示例詳解

    文章總結了多個數(shù)學和字符串處理函數(shù)的功能和使用示例,包括格式化數(shù)字、計算絕對值、平方根、取整、生成隨機數(shù)、四舍五入、截斷、返回符號、冪運算以及最大值最小值的計算,感興趣的朋友一起看看吧
    2025-03-03
  • mysql 字符串函數(shù)收集比較全

    mysql 字符串函數(shù)收集比較全

    mysql 字符串函數(shù)收集,需要的朋友可以參考下。
    2010-03-03
  • 基于mysql多實例安裝的深入解析

    基于mysql多實例安裝的深入解析

    本篇文章是對mysql多實例安裝進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • SQL如何獲取目標時間點或日期的方法實例

    SQL如何獲取目標時間點或日期的方法實例

    日期獲取在我們?nèi)粘i_發(fā)中經(jīng)常會遇到,這篇文章主要給大家介紹了關于SQL如何獲取目標時間點或日期的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • MySQL出現(xiàn)錯誤代碼:1055的三種解決方案(推薦!)

    MySQL出現(xiàn)錯誤代碼:1055的三種解決方案(推薦!)

    當我們在查詢時使用group by語句,出現(xiàn)錯誤代碼:1055;執(zhí)行發(fā)生錯誤語句,本文給大家介紹了MySQL出現(xiàn)錯誤代碼:1055的三種解決方案,文中有詳細的代碼示例和圖文供大家參考,需要的朋友可以參考下
    2024-05-05
  • MySQL緩存的查詢和清除命令使用詳解

    MySQL緩存的查詢和清除命令使用詳解

    這篇文章主要介紹了MySQL緩存的查詢和清除命令使用詳解,對于一些不常改變數(shù)據(jù)且有大量相同sql查詢的表,查詢緩存會顯得比較有用一些,需要的朋友可以參考下
    2015-12-12

最新評論

新营市| 天台县| 太和县| 寿宁县| 林州市| 乌兰浩特市| 垣曲县| 马关县| 安乡县| 南开区| 凌源市| 天峨县| 淮南市| 合作市| 宁武县| 顺昌县| 东安县| 安西县| 观塘区| 正蓝旗| 图们市| 舞钢市| 桂阳县| 许昌市| 安阳市| 那坡县| 姚安县| 余庆县| 建阳市| 北京市| 盈江县| 漳浦县| 射阳县| 天水市| 英超| 福鼎市| 永宁县| 大余县| 巩留县| 南昌县| 龙川县|