84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
见识到一个java项目,mysql数据库,所有表的主键都是varchar(64)
ringa_lee
varchar相对于int来说占用磁盘空间多,磁盘io也会多,然后内存带宽也会多。这点上尤其在innodb更为明显,innodb表的Secondary index的 leaf page中都要保存primary key的值,主键如果是varchar,会导致secondary index的体积会比较大。而且varchar主键在比较上也会慢一些,插入时容易发送数据的非顺序插入,导致碎片,index tree效率比int低
这是偷懒的表现!
很浪费,且不专业的表现。
如果是char()类型,如值给的是5。那么不管该字段内是否有值,就算null也将占用5×当前数据库编码字节。varchar()则会先用一个字节记录该类型最大范围,如不传值也就记录首字节而已,传至则存储值最大范围内的内容。
null
5×当前数据库编码字节
其余的字段其每条记录占用硬盘体积另说。
楼上说的都很对可能他记录的内容是UUID 很多jsp程序设计库的时候都这样,不知道为什么
varchar相对于int来说占用磁盘空间多,磁盘io也会多,然后内存带宽也会多。这点上尤其在innodb更为明显,innodb表的Secondary index的 leaf page中都要保存primary key的值,主键如果是varchar,会导致secondary index的体积会比较大。而且varchar主键在比较上也会慢一些,插入时容易发送数据的非顺序插入,导致碎片,index tree效率比int低
这是偷懒的表现!
很浪费,且不专业的表现。
如果是char()类型,如值给的是5。那么不管该字段内是否有值,就算
null
也将占用5×当前数据库编码字节
。varchar()则会先用一个字节记录该类型最大范围,如不传值也就记录首字节而已,传至则存储值最大范围内的内容。其余的字段其每条记录占用硬盘体积另说。
楼上说的都很对
可能他记录的内容是UUID
很多jsp程序设计库的时候都这样,不知道为什么