主頁(yè) > 知識(shí)庫(kù) > 簡(jiǎn)單了解mysql存儲(chǔ)字段類型查詢效率

簡(jiǎn)單了解mysql存儲(chǔ)字段類型查詢效率

熱門標(biāo)簽:百度地圖圖標(biāo)標(biāo)注中心 申請(qǐng)外呼電話線路 日照旅游地圖標(biāo)注 廣東人工電話機(jī)器人 信陽(yáng)穩(wěn)定外呼系統(tǒng)運(yùn)營(yíng)商 石家莊電商外呼系統(tǒng) 湖南人工外呼系統(tǒng)多少錢 南通自動(dòng)外呼系統(tǒng)軟件 芒果電話機(jī)器人自動(dòng)化

檢索性能從快到慢的是(此處是聽人說的):

  • 第一:tinyint,smallint,mediumint,int,bigint
  • 第二:char,varchar
  • 第三:NULL

解釋(轉(zhuǎn)載):

整數(shù)類型

1、TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,分別用8,16,24,32,64存

2、整數(shù)都有UNSIGNED可選屬性 (拿tinyint字段來舉例,unsigned后,字段的取值范圍是0-255,而signed的范圍是-128 - 127。 那么如果我們?cè)诿鞔_不需要負(fù)值存在的情況下,通常是不要設(shè)置signed來支持負(fù)數(shù)的。)

3、對(duì)于存儲(chǔ)和計(jì)算來說INT(1)和INT(20)是相同的,INT(N)中N只是規(guī)定了一些交互工具來顯示字符的個(gè)數(shù)

字符類型

char定長(zhǎng),存儲(chǔ)效率不如varchar,對(duì)于短數(shù)據(jù)的查詢優(yōu)于varchar

固定長(zhǎng)度的。比如使用uuid作為主鍵,那用char應(yīng)該更合適。

NULL類型

1、索引NULL列要額外的空間

2、進(jìn)行比較和計(jì)算時(shí)會(huì)對(duì)null值進(jìn)行處理,可能導(dǎo)致索引失效

所以盡量不要使用NULL 類型,多使用整數(shù)類型

另外,時(shí)間日期數(shù)據(jù)類型

1、不要用字符串存儲(chǔ)日期型數(shù)據(jù),浪費(fèi)空間

2、DATE能保存從1001到9999年,精度為秒,他把日期和時(shí)間封裝到格式為YYYYMMDDHHMMSS的整數(shù)中,使用8字節(jié)

3、TIMESTAMP保存了從1970年以來的秒數(shù),和Unix時(shí)間戳相同,只能保存1970到2038,使用4字節(jié)

4、FROM_UNIXTIME()和UNIX_TIMESTAMP()兩個(gè)函數(shù)轉(zhuǎn)換日期和Unix時(shí)間戳

5、DATE和TIMESTAMP中存的是時(shí)間,但是是哪里的時(shí)間呢???:前者不管哪里,他就是一個(gè)時(shí)間表示(與時(shí)區(qū)無關(guān)),后者是格林尼治時(shí)間。。就是說存儲(chǔ)時(shí)DATE就按照給的時(shí)間存,TIMESTAMP則是在先根據(jù)所在時(shí)區(qū)和給的時(shí)間戳算出對(duì)應(yīng)的格林尼治時(shí)間再存,訪問時(shí)DATE就按照他存的時(shí)間返回,TIMESTAMP則是根據(jù)存的時(shí)間戳(看作格林尼治時(shí)間)和所在時(shí)區(qū)算出所在時(shí)區(qū)的對(duì)應(yīng)時(shí)間。

6、通常用TIMESTAMP,空間效率高

7、MYSQL沒有提供比秒更小粒度的日期和時(shí)間值,如果需要,可以用BIGINT存儲(chǔ)微妙級(jí)別的時(shí)間戳,或用DOUBLE存儲(chǔ)秒之后的小數(shù)部分。

實(shí)數(shù)類型

1、金融類要用DECIMAL

2、DECIMAL可以保存BIGINT范圍外的整數(shù)

3、FLOAT和DOUBLE使用標(biāo)準(zhǔn)的浮點(diǎn)運(yùn)算進(jìn)行近似計(jì)算

char 和 varchar

1、char是定長(zhǎng),varchar是變長(zhǎng),也就是varchar節(jié)省空間(除非使用ROW——FORMAT=FIXED創(chuàng)建的話)

2、因?yàn)関archar是變長(zhǎng)的,所以UPDATE時(shí)如果長(zhǎng)度變長(zhǎng),就會(huì)做額外的工作

3、下列情況使用varchar:字符串列的最大長(zhǎng)度比平均長(zhǎng)度大很多;列的更新很少(所以碎片不是問題);使用了像UTF8這樣的字符集(每個(gè)字符都使用不同的字節(jié)數(shù)進(jìn)行存儲(chǔ))

4、CHAR適用情況:很短,或者所有值都接近同一個(gè)長(zhǎng)度(如MD5);列經(jīng)常變更

5、末尾空格問題:高版本varchar會(huì)保留末尾空格;char和低版本varchar會(huì)剔除末尾空格。

6、CHAR(N),VARCHAR(N)中N表示字符數(shù),而非字節(jié)數(shù)(中文字符在UTF8中占用3字節(jié))

7、雖然VARCHAR(N)數(shù)據(jù)類型在磁盤中存的就是他所表示的字符串的大小,但是讀取到內(nèi)存中的時(shí)候內(nèi)存是會(huì)給他分配N*k+1or2(N=255,1;else 2;)(k根據(jù)字符集決定)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Mysql中批量替換某個(gè)字段的部分?jǐn)?shù)據(jù)(推薦)
  • mysql 替換字段部分內(nèi)容及mysql 替換函數(shù)replace()
  • mysql查詢字段類型為json時(shí)的兩種查詢方式
  • MySQL group by對(duì)單字分組序和多字段分組的方法講解
  • MySQL中可為空的字段設(shè)置為NULL還是NOT NULL
  • MySQL中字段類型char、varchar和text的區(qū)別
  • mysql創(chuàng)建存儲(chǔ)過程實(shí)現(xiàn)往數(shù)據(jù)表中新增字段的方法分析
  • MySQL根據(jù)某一個(gè)或者多個(gè)字段查找重復(fù)數(shù)據(jù)的sql語(yǔ)句

標(biāo)簽:公主嶺 沈陽(yáng) 呼和浩特 惠州 天津 合肥 阿里 牡丹江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《簡(jiǎn)單了解mysql存儲(chǔ)字段類型查詢效率》,本文關(guān)鍵詞  簡(jiǎn)單,了解,mysql,存儲(chǔ),字段,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《簡(jiǎn)單了解mysql存儲(chǔ)字段類型查詢效率》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于簡(jiǎn)單了解mysql存儲(chǔ)字段類型查詢效率的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章