關(guān)于mysql中時間日期類型和字符串類型的選擇
一、DATETIME、TIMESTAMP 的用法
MySQL中有多種表示時間日期的數(shù)據(jù)類型,主要有YEAR、TIME、DATE、DATETIME、TIMESTAMP等

1、相同點
datetime和timestamp都可以表示 YYYY-MM-DDHH:MM:SS 這種年月日時分秒格式的數(shù)據(jù)。
2、不同點
datetime存儲與時區(qū)無關(guān)(準備來說是datetime只支持一個時區(qū),就是存儲時當前服務(wù)器的時區(qū)),而timestamp存儲的是與時區(qū)有關(guān)。
datetime、timestamp精確度都是秒,datetime與時區(qū)無關(guān),存儲的范圍廣(1001-9999),timestamp與時區(qū)有關(guān),存儲的范圍小(1970-2038)。
3、選擇
TIMESTAMP和DATETIME除了存儲范圍和存儲方式不一樣,沒有太大區(qū)別。當然,對于跨時區(qū)的業(yè)務(wù),TIMESTAMP更為合適。
二、varchar 和 text 數(shù)據(jù)類型的用法
mysql在存儲字符串時,可以使用char、varchar或者text類型
1、相同點
varchar 和 text 都可以存儲變長字符串且字符串長度上限為65535字節(jié)
2、不同點
varchar 速度快,不存在空間浪費,不處理尾部空格,上限為65535字節(jié),但是有存儲長度實際65532字節(jié)最大可用。255字節(jié)以下用1字節(jié)存儲長度,255字節(jié)以上用2字節(jié)存儲長度。 text,存變長大數(shù)據(jù),速度慢,不存在空間浪費,不處理尾部空格,上限65535字節(jié),會用額外空間存放數(shù)據(jù)長度,顧可以全部使用65535字節(jié)。
不能在TEXT列上放置索引(全文索引除外),對于text來說,只能添加前綴索引,并且前綴索引最大只能達到1000字節(jié)
text沒有默認值
當varchar大于某些數(shù)值的時候,其會自動轉(zhuǎn)換為text,大概規(guī)則如下:
大于varchar(255)變?yōu)?tinytext
大于varchar(500)變?yōu)?text
大于varchar(20000)變?yōu)?mediumtext
3、選擇
1、經(jīng)常變化的字段用varchar;
2、知道固定長度的用char;
3、超過255字節(jié)的只能用varchar或者text;
4、能用varchar的地方不用text;
5、能夠用數(shù)字類型的字段盡量選擇數(shù)字類型而不用字符串類型,這會降低查詢和連接的性能,并會增加存儲開銷。這是因為引擎在處理查詢和連接回逐個比較字符串中每一個字符,而對于數(shù)字型而言只需要比較一次就夠了;
6、存儲引擎對于選擇 CHAR 和VARCHAR 的影響:
對于MyISAM 存儲引擎,最好使用固定長度的數(shù)據(jù)列代替可變長度的數(shù)據(jù)列。這樣可以使整個表靜態(tài)化,從而使數(shù)據(jù)檢索更快,用空間換時間。對于InnoDB存儲引擎,最好使用可變長度的數(shù)據(jù)列,因為 InnoDB 數(shù)據(jù)表的存儲格式不分固定長度和可變長度,因此使用CHAR 不一定比使用 VARCHAR 更好,但由于 VARCHAR 是按照實際的長度存儲,比較節(jié)省空間,所以對磁盤 I/O 和數(shù)據(jù)存儲總量比較好。
到此這篇關(guān)于關(guān)于mysql中時間日期類型和字符串類型的選擇的文章就介紹到這了,更多相關(guān)mysql時間日期類型和字符串類型選擇內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 實現(xiàn)添加時間自動添加更新時間自動更新操作
這篇文章主要介紹了mysql 實現(xiàn)添加時間自動添加更新時間自動更新操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
Mysql滿意度調(diào)查分組去除最高最低求平均分的實現(xiàn)思路
該文章介紹了如何使用SQL查詢實現(xiàn)按部門分組,去除每個部門的最高分和最低分,并計算剩余分數(shù)的平均分,文章詳細描述了實現(xiàn)這一需求的步驟,包括使用窗口函數(shù)、子查詢和CTE等技術(shù),感興趣的朋友跟隨小編一起看看吧2025-01-01
解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.*
這篇文章主要介紹了解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION問題,本文給大家分享兩種情況分析分享解決方案,感興趣的朋友一起看看吧2022-11-11
MySQL 創(chuàng)建多對多和一對一關(guān)系方法
這篇文章主要介紹了MySQL 創(chuàng)建多對多和一對一關(guān)系方法,文章舉例詳細說明具有一定的參考價值,需要的小伙伴可以參考一下2022-03-03

