mysql優化_建表字段型別varchar,char的選擇
在建立資料庫表結構的時候對了String型別的資料我們經常會糾結資料庫給他設定成什麼資料庫型別呢? 一般都是參考char和varcahr,
下面明確總結下這兩種資料庫型別的區別:
首先明確的是char的長度是不可以變的,而varchar的長度是可變的,也即是說,定義一個char[10]和varchar[10],如果存進去的是'abcd',那麼char所佔的長度仍然是10,除了abcd四個字元外,後面會新增留個空格,而varchar就立馬將長度變為4了。
取資料時char型別要用trim()去掉多餘的空格,而varcahr是不需要的,儘管如此,char的儲存速度還是要比varchar要快的多,因為其長度固定,方便程式的儲存和查詢;單是char也為此付出的是空間的代價,因為其長度固定,所以難免會有多餘的空格佔位符佔據空間,可謂是一空間換取時間效率。
然後對於兩者的儲存方式,對英文字元(ASCII)佔用一個位元組,對一個漢子佔用兩個位元組;而varcahr的儲存方式是,對每個英文字元佔用兩個位元組,漢子也佔用2個位元組,兩者的儲存資料都非unicode的字元資料。
所以比如像身份證號,銀行卡號,這種長度不變的字串型別個人覺得可以選擇char進行儲存更好。
相關推薦
mysql優化_建表字段型別varchar,char的選擇
在建立資料庫表結構的時候對了String型別的資料我們經常會糾結資料庫給他設定成什麼資料庫型別呢? 一般都是參考char和varcahr, 下面明確總結下這兩種資料庫型別的區別: 首先明確的是char的長度是不可以變的,而varchar的長度是可變的,
Java實體類的屬性型別與mysql資料庫表字段型別對應表
感謝原文博主https://blog.csdn.net/Hyo555/article/details/81943340 還有些經常用到的mysql語句 -- 新增表結構 DROP TABLE IF EXISTS `servicnn`; CREATE TABLE `servin` ( `id` i
MySQL 建表字段長度的限制
root@localhost : test 10:30:54>CREATE TABLE tb_test ( -> recordid varchar(32) NOT NULL, -> areaShow varchar(10000) DEFAULT NULL, -&
mysql數據庫表字段使用DESC等關鍵字報錯及解決方法
直接 方式 sel max desc base 字段名 字段 方法 <!-- desc是MySQL數據庫的關鍵字,作為字段名直接使用會報錯 --><sql id="Base_Column"> id,mol,ip,port,name,t.desc,m
mysql 不同庫不同表字段數據復制
upd 報錯 另一個 tid null manager inner target cau 需求:把一個表某個字段內容復制到另一張表的某個字段。 實現sql語句1: UPDATE file_manager_folder f1 LEFT OUTER JOIN file_ma
MySQL索引使用:字段為varchar類型時,條件要使用''包起來
row prim was OS con xtra str fault 建表語句 結論: 當MySQL中字段為int類型時,搜索條件where num=‘111‘ 與where num=111都可以使用該字段的索引。當MySQL中字段為varchar類型時,搜索條件whe
flask-migrate 更改表字段型別、欄位長度
最近在開發過程中遇到了需要將string型別轉換成bool型別的問題,但是一開始設計表是設計成了string型別,因此記錄下flask-migrate更改表字段型別的方式。 alembic支援檢測欄位長度改變,不過它不是預設的,需要配置; 找到migrations/env.py檔案
mysql 優化系列之欄位型別選取
mysql 優化是一個很有意思的話題,可以從很多方面來說,大到伺服器叢集,應用體系架構等,小到欄位型別選擇,儲存引擎的選擇等,隨著mysql的發展,到目前(最新版本是8.0,筆者5.7)Innodb 已是預設的儲存引擎(mysql 5.5 已將InnoDB作為預設儲存引擎)
Oracle筆記之修改表字段型別
Mysql對於有資料和沒資料的表字段型別都可以隨意修改,不過oracle就不一樣。 假如表A有個欄位a,本來為number型別,然後我們想修改為varchar2型別。 (1)欄位a沒資料的情況,改為va
資料庫統計建表字段資訊
資料庫統計 1.統計資料庫中標的欄位資訊(欄位名字,欄位約束,欄位型別,欄位註釋等,建表的資訊都儲存在information_schema資料庫中,這個資料庫是mysql預設就有的,查詢sql語句如下(只需要把表名稱換成自己的表名即可執行): USE information_sche
Oracle 修改資料庫表字段型別
alter table ACT_HI_TASKINST modify (DESCRIPTION_ VARCHAR2(4000)); alter table ACT_HI_TASKINST modify (DELETE_REASON_ VARCHAR2(4000)); 參考網址: ht
mybatis-generator 無法自動生成表字段型別為 text 的屬性
問題描述: 在使用mybatis-generator 自動生成外掛時,關於資料庫表中欄位型別為 text 的欄位無法對映到自動生成的 JavaBean 中。 比如訊息表 t_message_info 中的 message_content 欄位為 text型別
資料庫-設計-資料庫表字段型別設計標準
常用型別:日期,數字 字串,文字 日期:最好用字串 數字:需要排序的列用數字,因為字串排序錯誤; 字串:能不用數字的都用字串; 文字:長字串; 綜上:資料型別: 數字:需要排序列; 文字:長字串; 字串:用來表示日期,不用排序的數字,2000以內的字串;
Teradata 修改表字段型別
在 Teradata 資料庫環境中,如何修改一個已經存在記錄的表字段型別呢? 因為不能通過 alter 方式直接修改欄位型別。要麼先 alter drop 欄位,再 alter add 欄位。但是這樣會丟失欄位的資料。 我們可以先通過 create tableA
java根據漢字轉拼音,多音字人工處理,資料庫表字段型別為nvarchar,其它要亂碼
package com.zsjz.utils.tools; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; i
如何實現一個表字段資料變化,另一張表中資料隨著變化
資料表1(db_integrityevent): 資料表2:(db_corporatecreditscore): navicat觸發器寫法: 可以實現表中相關資料變化,表中其他跟隨這變化。 mysql命令列寫法: delimiter $$ for each row B
mysql int轉換成string時型別要用char
欄位:number 是integer型別 在表test中 select cast(number as char) as number from test; 或者convert()方法 因為轉換的時候mysql不支援轉換成varchar所有要轉成char.
資料庫型別——varchar,varchar2&char
可變長度字串和不可變長度字串 varchar和varchar2在資料庫的定義都是可變長度的字串,這點和char不同,char是不可變長度。注意,這裡指的可變和不可變是指儲存在資料庫中的長度。 比如在表中定義一個欄位的型別為char(20),插入abc的時候,
Oralce 表字段為關鍵字,查詢不準確
在oracle資料庫,有一張表,其中有個level欄位,select * 的時候,level的資料是對的,但是如果我select level的話,查出來level的欄位值都是0。 在SQL Serv
Mysql優化-為表字段新增索引
1.新增PRIMARY KEY(主鍵索引): ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.新增UNIQUE(唯一索引) : ALTER TABLE `table_name` ADD U