欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單了解mysql存儲字段類型查詢效率

 更新時間:2020年09月19日 12:06:50   作者:賈樹丙  
這篇文章主要介紹了簡單了解mysql存儲字段類型查詢效率,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

  • 第一: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。 那么如果我們在明確不需要負值存在的情況下,通常是不要設置signed來支持負數(shù)的。)

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

字符類型

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

固定長度的。比如使用uuid作為主鍵,那用char應該更合適。

NULL類型

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

2、進行比較和計算時會對null值進行處理,可能導致索引失效

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

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

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

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

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

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

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

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

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

實數(shù)類型

1、金融類要用DECIMAL

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

3、FLOAT和DOUBLE使用標準的浮點運算進行近似計算

char 和 varchar

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

2、因為varchar是變長的,所以UPDATE時如果長度變長,就會做額外的工作

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

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

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • mysql主鍵id的生成方式(自增、唯一不規(guī)則)

    mysql主鍵id的生成方式(自增、唯一不規(guī)則)

    本文主要介紹了mysql主鍵id的生成方式,主要包括兩種生成方式,文中通過代碼示例介紹的非常詳細,感興趣的可以了解一下
    2021-09-09
  • Mysql Online DDL的使用詳解

    Mysql Online DDL的使用詳解

    在日常DBA運維過程中,對表結(jié)構(gòu)進行變更算是個普遍的需求了。如果操作的對象是個熱表、大表,難免心里一怵,這些DDL操作是否可以直接執(zhí)行,哪些會影響線上讀寫,哪些會影響主從,甚至導致服務器壓力驟升,本文做了梳理,希望對大家有所幫助。
    2021-05-05
  • 如何恢復MYSQL的ROOT口令

    如何恢復MYSQL的ROOT口令

    如何恢復MYSQL的ROOT口令...
    2006-11-11
  • SQL Server 數(shù)據(jù)庫的備份詳細介紹及注意事項

    SQL Server 數(shù)據(jù)庫的備份詳細介紹及注意事項

    這篇文章主要介紹了SQL Server 備份詳細介紹及注意事項的相關資料,需要的朋友可以參考下
    2016-12-12
  • mysql優(yōu)化limit查詢語句的5個方法

    mysql優(yōu)化limit查詢語句的5個方法

    這篇文章主要介紹了mysql優(yōu)化limit查詢語句的5個方法,它們分別是子查詢優(yōu)化法、倒排表優(yōu)化法、反向查找優(yōu)化法、limit限制優(yōu)化法和只查索引法,需要的朋友可以參考下
    2014-07-07
  • MySQL root密碼忘記后更優(yōu)雅的解決方法

    MySQL root密碼忘記后更優(yōu)雅的解決方法

    這篇文章主要給大家介紹了關于MySQL root密碼忘記后更優(yōu)雅的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • 淺談mysql的索引設計原則以及常見索引的區(qū)別

    淺談mysql的索引設計原則以及常見索引的區(qū)別

    下面小編就為大家?guī)硪黄獪\談mysql的索引設計原則以及常見索引的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySql UNION 一行轉(zhuǎn)多列的實現(xiàn)示例

    MySql UNION 一行轉(zhuǎn)多列的實現(xiàn)示例

    在MySQL命令行中,有時候我們會遇到一行的數(shù)據(jù)需要以多列的形式呈現(xiàn)的情況,本文就詳細介紹了一下一行轉(zhuǎn)多列的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • 介紹一個針對C++程序的MySQL訪問庫soci

    介紹一個針對C++程序的MySQL訪問庫soci

    這篇文章主要介紹了介紹一個針對C++程序的MySQL訪問庫soci,文章中還講了其中的一些操作方法,需要的朋友可以參考下
    2015-05-05
  • MySQL分組查詢Group By實現(xiàn)原理詳解

    MySQL分組查詢Group By實現(xiàn)原理詳解

    在MySQL 中,GROUP BY 的實現(xiàn)同樣有多種(三種)方式,其中有兩種方式會利用現(xiàn)有的索引信息來完成 GROUP BY,另外一種為完全無法使用索引的場景下使用。下面我們分別針對這三種實現(xiàn)方式做一個分析
    2016-05-05

最新評論