成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

mysql - 表的主鍵都是varchar(64),有什么不好?

瀏覽:84日期:2022-06-20 10:49:57

問題描述

見識(shí)到一個(gè)java項(xiàng)目,mysql數(shù)據(jù)庫,所有表的主鍵都是varchar(64)

問題解答

回答1:

varchar相對(duì)于int來說占用磁盤空間多,磁盤io也會(huì)多,然后內(nèi)存帶寬也會(huì)多。這點(diǎn)上尤其在innodb更為明顯,innodb表的Secondary index的 leaf page中都要保存primary key的值,主鍵如果是varchar,會(huì)導(dǎo)致secondary index的體積會(huì)比較大。而且varchar主鍵在比較上也會(huì)慢一些,插入時(shí)容易發(fā)送數(shù)據(jù)的非順序插入,導(dǎo)致碎片,index tree效率比int低

回答2:

這是偷懶的表現(xiàn)!

回答3:

很浪費(fèi),且不專業(yè)的表現(xiàn)。

如果是char()類型,如值給的是5。那么不管該字段內(nèi)是否有值,就算null也將占用5×當(dāng)前數(shù)據(jù)庫編碼字節(jié)。varchar()則會(huì)先用一個(gè)字節(jié)記錄該類型最大范圍,如不傳值也就記錄首字節(jié)而已,傳至則存儲(chǔ)值最大范圍內(nèi)的內(nèi)容。

其余的字段其每條記錄占用硬盤體積另說。

回答4:

樓上說的都很對(duì)可能他記錄的內(nèi)容是UUID 很多jsp程序設(shè)計(jì)庫的時(shí)候都這樣,不知道為什么