我也想知道,如果我应该使用varchar或bigint作为主键来存储大约11-15位数的大IDS,哪个性能更好?是否存在一些性能问题如果我设置bigint作为myisam表的主键在mysql上?
谢谢。
我也想知道,如果我应该使用varchar或bigint作为主键来存储大约11-15位数的大IDS,哪个性能更好?是否存在一些性能问题如果我设置bigint作为myisam表的主键在mysql上?
谢谢。
BIGINT是8个字节 VARCHAR是〜13个字节
整数也比字符的字符串更快。 Plus varchar被认为是一个动态字段,如果你保持所有的字段是静态的,你可以获得相当大的性能提升。
其实很多。使用INT而不是BIGINT可以显着减少磁盘空间。仅仅这一项改变就可以为您节省10%-20%(取决于您的具体情况)。更重要的是,当用作主键以及外键和索引时,减少索引大小可能为50%,这将在使用这些索引时提高性能。
对字符串PK一两件事 - 如果你使用InnoDB引擎,PK还定义了行(聚集键)的物理顺序,因此,即使insert
将有更多的开销和断裂,如果行插入的内容不符合要求。用数字你可以有auto_increment列,所以每个数字会比以前更大...
我还没有测量,但我会说bigint是一个比varchar(15)更好的设计决策, – 2012-02-15 23:54:44