1

我正在制作一个数据库表,其中一列是type. 这是存储在这一行中的东西的类型。

由于这个软件是开源的,我不得不考虑其他人使用它。我可以使用int,理论上它可以更小以保存在数据库中并且查找速度更快,但是我必须有一些文档,这会使我的用户更加困惑。另一种选择是使用 a string,它占用更多空间并且查找速度较慢。

假设此表每天将处理数千行,如果我选择了错误的数据类型,它可能会很快达到不可扩展的地步。

int当数据库中可能有数百万行时,在这种情况下总是首选使用吗?

4

1 回答 1

0

你是对的,INT速度更快,因此是更好的选择。

如果您担心未来的开发人员,请在解释每个值的列中添加注释。如果有很多值,请考虑使用查找表,这样您就可以请求一个字符串,获取它的数字 ID(有点像常量)然后查找它。

像这样

id |  id_name
---|------------
1  | TYPE_ALPHA
2  | TYPE_BETA
3  | TYPE_DELTA

现在您对 ID 有了字面解释。只需收集 ID ( WHERE id_name = 'TYPE_ALPHA'),然后使用它来过滤您的表格。

然而,这两种解决方案的一个愉快的媒介可能是使用ENUM数据类型。文档在这里

如果我对 ENUM 的理解是正确的,它会在比较过程中将字段视为字符串,但将实际数据存储为数字整数。当您查找一个字符串,并且它没有在表模式中定义时,MySQL 将简单地抛出一个错误,如果它确实存在,那么它将使用整数等价物,甚至不显示它。这提供了速度和可读性。

于 2013-10-17T04:33:02.773 回答