關(guān)于mysql中時(shí)間日期類型和字符串類型的選擇
一、DATETIME、TIMESTAMP 的用法
MySQL中有多種表示時(shí)間日期的數(shù)據(jù)類型,主要有YEAR、TIME、DATE、DATETIME、TIMESTAMP等
1、相同點(diǎn)
datetime和timestamp都可以表示 YYYY-MM-DDHH:MM:SS 這種年月日時(shí)分秒格式的數(shù)據(jù)。
2、不同點(diǎn)
datetime存儲(chǔ)與時(shí)區(qū)無(wú)關(guān)(準(zhǔn)備來(lái)說(shuō)是datetime只支持一個(gè)時(shí)區(qū),就是存儲(chǔ)時(shí)當(dāng)前服務(wù)器的時(shí)區(qū)),而timestamp存儲(chǔ)的是與時(shí)區(qū)有關(guān)。
datetime、timestamp精確度都是秒,datetime與時(shí)區(qū)無(wú)關(guān),存儲(chǔ)的范圍廣(1001-9999),timestamp與時(shí)區(qū)有關(guān),存儲(chǔ)的范圍小(1970-2038)。
3、選擇
TIMESTAMP和DATETIME除了存儲(chǔ)范圍和存儲(chǔ)方式不一樣,沒(méi)有太大區(qū)別。當(dāng)然,對(duì)于跨時(shí)區(qū)的業(yè)務(wù),TIMESTAMP更為合適。
二、varchar 和 text 數(shù)據(jù)類型的用法
mysql在存儲(chǔ)字符串時(shí),可以使用char、varchar或者text類型
1、相同點(diǎn)
varchar 和 text 都可以存儲(chǔ)變長(zhǎng)字符串且字符串長(zhǎng)度上限為65535字節(jié)
2、不同點(diǎn)
varchar 速度快,不存在空間浪費(fèi),不處理尾部空格,上限為65535字節(jié),但是有存儲(chǔ)長(zhǎng)度實(shí)際65532字節(jié)最大可用。255字節(jié)以下用1字節(jié)存儲(chǔ)長(zhǎng)度,255字節(jié)以上用2字節(jié)存儲(chǔ)長(zhǎng)度。 text,存變長(zhǎng)大數(shù)據(jù),速度慢,不存在空間浪費(fèi),不處理尾部空格,上限65535字節(jié),會(huì)用額外空間存放數(shù)據(jù)長(zhǎng)度,顧可以全部使用65535字節(jié)。
不能在TEXT列上放置索引(全文索引除外),對(duì)于text來(lái)說(shuō),只能添加前綴索引,并且前綴索引最大只能達(dá)到1000字節(jié)
text沒(méi)有默認(rèn)值
當(dāng)varchar大于某些數(shù)值的時(shí)候,其會(huì)自動(dòng)轉(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、知道固定長(zhǎng)度的用char;
3、超過(guò)255字節(jié)的只能用varchar或者text;
4、能用varchar的地方不用text;
5、能夠用數(shù)字類型的字段盡量選擇數(shù)字類型而不用字符串類型,這會(huì)降低查詢和連接的性能,并會(huì)增加存儲(chǔ)開銷。這是因?yàn)橐嬖谔幚聿樵兒瓦B接回逐個(gè)比較字符串中每一個(gè)字符,而對(duì)于數(shù)字型而言只需要比較一次就夠了;
6、存儲(chǔ)引擎對(duì)于選擇 CHAR 和VARCHAR 的影響:
對(duì)于MyISAM 存儲(chǔ)引擎,最好使用固定長(zhǎng)度的數(shù)據(jù)列代替可變長(zhǎng)度的數(shù)據(jù)列。這樣可以使整個(gè)表靜態(tài)化,從而使數(shù)據(jù)檢索更快,用空間換時(shí)間。對(duì)于InnoDB存儲(chǔ)引擎,最好使用可變長(zhǎng)度的數(shù)據(jù)列,因?yàn)?InnoDB 數(shù)據(jù)表的存儲(chǔ)格式不分固定長(zhǎng)度和可變長(zhǎng)度,因此使用CHAR 不一定比使用 VARCHAR 更好,但由于 VARCHAR 是按照實(shí)際的長(zhǎng)度存儲(chǔ),比較節(jié)省空間,所以對(duì)磁盤 I/O 和數(shù)據(jù)存儲(chǔ)總量比較好。
到此這篇關(guān)于關(guān)于mysql中時(shí)間日期類型和字符串類型的選擇的文章就介紹到這了,更多相關(guān)mysql時(shí)間日期類型和字符串類型選擇內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL將一個(gè)字段中以逗號(hào)分隔的取出來(lái)形成新的字段實(shí)現(xiàn)
這篇文章主要介紹了MySQL將一個(gè)字段中以逗號(hào)分隔的取出來(lái)形成新的字段實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Java數(shù)據(jù)類型與MySql數(shù)據(jù)類型對(duì)照表
這篇文章主要介紹了Java數(shù)據(jù)類型與MySql數(shù)據(jù)類型對(duì)照表,以表格形式分析了java與mysql對(duì)應(yīng)數(shù)據(jù)類型,并簡(jiǎn)單講述了數(shù)據(jù)類型的選擇與使用方法,需要的朋友可以參考下2016-06-06MySQL中的驅(qū)動(dòng)表與被驅(qū)動(dòng)表及含義
使用join連接查詢時(shí)如果有where條件,則MySQL執(zhí)行器會(huì)根據(jù)查詢條件過(guò)濾后的結(jié)果自動(dòng)選擇驅(qū)動(dòng)表或被驅(qū)動(dòng)表,這篇文章主要介紹了MySQL的驅(qū)動(dòng)表與被驅(qū)動(dòng)表,需要的朋友可以參考下2023-10-10MySQL數(shù)據(jù)表索引命名規(guī)范的實(shí)現(xiàn)示例
索引是提高查詢性能的重要工具,本文主要介紹了MySQL數(shù)據(jù)表索引命名規(guī)范的實(shí)現(xiàn)示例,包括不同類型索引的命名方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05Mysql GROUP BY查詢每組某值最大的一條數(shù)據(jù)
這篇文章主要介紹了Mysql GROUP BY查詢每組某值最大的一條數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08MySQL的存儲(chǔ)函數(shù)與存儲(chǔ)過(guò)程相關(guān)概念與具體實(shí)例詳解
MySQL存儲(chǔ)函數(shù)(自定義函數(shù)),函數(shù)一般用于計(jì)算和返回一個(gè)值,可以將經(jīng)常需要使用的計(jì)算或功能寫成一個(gè)函數(shù),存儲(chǔ)函數(shù)和存儲(chǔ)過(guò)程一樣,都是在數(shù)據(jù)庫(kù)中定義一些SQL語(yǔ)句的集合2023-03-03