首頁  >  問答  >  主體

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

见识到一个java项目,mysql数据库,所有表的主键都是varchar(64)

ringa_leeringa_lee2742 天前892

全部回覆(4)我來回復

  • 怪我咯

    怪我咯2017-04-17 15:08:53

    varchar相對於int來說佔用磁碟空間多,磁碟io也會多,然後記憶體頻寬也會多。這一點上尤其在innodb更為明顯,innodb表的Secondary index的 leaf page中都要保存primary key的值,主鍵如果是varchar,會導致secondary index的體積會比較大。而且varchar主鍵在比較上也會慢一些,插入時容易發送資料的非順序插入,導致碎片,index tree效率比int低

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:08:53

    這是偷懶的表現!

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:08:53

    很浪費,且不專業的表現。

    如果是char()型,如值給的是5。那麼不管該欄位內是否有值,就算null也將佔用5×当前数据库编码字节。 varchar()則會先用一個位元組記錄該型別最大範圍,如不傳值也就記錄首字節而已,傳至則儲存值最大範圍內的內容。

    其餘的欄位其每筆記錄佔用硬碟體積另說。

    回覆
    0
  • 阿神

    阿神2017-04-17 15:08:53

    樓上說的都很對
    可能他記錄的內容是UUID
    很多jsp程式設計庫的時候都這樣,不知道為什麼

    回覆
    0
  • 取消回覆