0

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

4

3 回答 3

3

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

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

毫无疑问我会选择 BIGINT

于 2013-12-13T01:05:32.283 回答
2

就存储而言,最有效的方法是使用 datatype DECIMAL(13)

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

于 2013-11-12T02:55:34.630 回答
2

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

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

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

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

于 2013-11-12T02:41:37.040 回答