MySQL:CHAR(13)或BIGINT(13)在考虑性能时?

时间:2013-11-12 02:33:21

标签: mysql

我将所有可能的ISBNS存储在一个表中。这些isbns总是长13位,总是数字。每个ISBN都以“978”或“979”开头。从纯粹的性能角度来看,将列作为BIGINT(13)或CHAR(13)更好吗?为什么?还有另一种存储这种数据的方法会更有效吗?

3 个答案:

答案 0 :(得分:2)

就存储而言,最有效的方法是使用数据类型DECIMAL(13)

这将需要总共6个字节。 (4个字节将存储9个十进制数字,剩余的4个十进制数字需要另外2个字节。)

答案 1 :(得分:1)

首先,BIGINT(13) 13的含义不是它们的内部存储空间。 BIGINT(n)总是占用8个字节。并且,CHAR(13)需要13个字节。所以,BIGINT更快。

如果小尺寸对您很重要,而我不是ISBN专家,如果ISBN开始'978'或'979',剩下的部分是10位数?然后你可以创建2个colunms,

isbn_prefix CHAR(1),remain_part INT。 isbn_prefix为'978'存储'8',为979存储'9',remain_part存储10位数。 BIGINT只需要4个字节。所以,小于BIGINT

但是,Simple是最好的。如果我是你,我会使用BIGINT

答案 2 :(得分:1)

我只是在1M行表上进行测试,作为我正在进行的类似项目的一部分。

BIGINT -  0.0003 sec
Varchar(13)- 1.3996 sec
CHAR(13) - 1.2910 sec

毫无疑问我会选择BIGINT