跟同事理論:這個(gè)mysql 字段用什么好?
問(wèn)題描述
一個(gè)數(shù)組序列化,大概長(zhǎng)度不到一百,偶爾有200吧,不過(guò)很少幾乎沒(méi),然后 同事用了char類型,然后用255個(gè)字節(jié), 他說(shuō) 速度快我覺(jué)得 這個(gè)表有其他類型 包括文本,時(shí)間,int等,作為一個(gè)表已經(jīng)不是靜態(tài)表了,動(dòng)態(tài)表char類型速度是沒(méi)區(qū)別的!所以我覺(jué)得用varchar 類型 255比較合適~ 節(jié)省點(diǎn)字節(jié),現(xiàn)在數(shù)據(jù)庫(kù)已經(jīng)99M了 我擦~~
大家覺(jué)得如何?
問(wèn)題解答
回答1:這個(gè)用哪個(gè)影響都不會(huì)太大。
char占用固定長(zhǎng)度,在MyISAM引擎中,數(shù)據(jù)的物理結(jié)構(gòu)上會(huì)連續(xù)一點(diǎn),速度在某些場(chǎng)景下是會(huì)快一點(diǎn),產(chǎn)生碎片會(huì)少一點(diǎn)。典型的空間換時(shí)間。
在InnoDB引擎中,影響不會(huì)太大,沒(méi)什么好爭(zhēng)論的。
現(xiàn)在MyISAM引擎基本沒(méi)人使用了,InnoDB上char類型的使用會(huì)浪費(fèi)更多的內(nèi)存池空間。
經(jīng)驗(yàn)之談。InnoDB引擎如果是固定長(zhǎng)度的就用char,比如32位md5的值存儲(chǔ)就用char(32)基他用varchar。
回答2:經(jīng)驗(yàn)之談是
相對(duì)固定長(zhǎng)度的字符一般用char,比如這個(gè)列絕大部分都是在200,有198,197的這種非固定長(zhǎng)度,并且跨度較大的,會(huì)用varchar,比如一部分是200,還有一部分是2的這種
char一般會(huì)在效率等方面比varchar好一些
回答3:要知道char是固定長(zhǎng)度,有多余的以空格填充,速度自然比varchar快,要說(shuō)到字節(jié),varchar對(duì)英文與漢字都是2個(gè)字節(jié),而char對(duì)英文一個(gè)字節(jié),漢字兩個(gè)字節(jié)。當(dāng)然char類型對(duì)數(shù)據(jù)的處理相對(duì)來(lái)說(shuō)也要使用trim來(lái)消除空格。所以到底要使用什么還是要看你真正要追求的是什么。
回答4:速度快?網(wǎng)上看的?自己試驗(yàn)過(guò)?不想呵呵了,固定短字符用char,其他用varchar
回答5:用測(cè)試數(shù)據(jù)說(shuō)話。跑個(gè)1個(gè)G數(shù)據(jù)寫入查詢更新,試試就知道了
相關(guān)文章:
1. android - weex 項(xiàng)目createInstanceReferenceError: Vue is not defined2. PHPExcel表格導(dǎo)入數(shù)據(jù)庫(kù)怎么導(dǎo)入3. pdo 寫入到數(shù)據(jù)庫(kù)的內(nèi)容為中文的時(shí)候?qū)懭雭y碼4. android - 哪位大神知道java后臺(tái)的api接口的對(duì)象傳到前端后輸入日期報(bào)錯(cuò),是什么情況?求大神指點(diǎn)5. javascript - 如圖,百度首頁(yè),查看源代碼為什么什么都沒(méi)有?6. vue2.0+webpack 如何使用bootstrap?7. PHP類封裝的插入數(shù)據(jù),總是插入不成功,返回false;8. mac連接阿里云docker集群,已經(jīng)卡了2天了,求問(wèn)?9. 微信渠道二維碼怎么使用?10. 我畢業(yè)以后在工作之余學(xué)了 PHP,都是自學(xué) 現(xiàn)在在找這方面的工作 求前輩指導(dǎo)學(xué)習(xí)方向 工作常用的知識(shí)
