MySQL枚举。使用字符串或数字更好吗?

时间:2011-08-25 12:56:45

标签: php mysql

我很好奇MySQL ENUM数据类型。 例如,如果我有一些可能的字符串,那么最好使用字符串,或者只是一个数字,然后使用例如PHP将数字解码为字符串?

例如:

ENUM("Dog", "Cat", "Fish");

VS

ENUM(1,2,3);

然后使用类似的东西:

<?php
$values = Array("Dog", "Cat", "Fish);
$result = mysql_query('SELECT `animal` FROM `example_table`');
$item = mysql_fetch_object($result);
$animal = $item->type;
?>

或者在可能的条目少于128(1字节)的情况下使用tinyint是最好的情况吗?

我想知道性能和空间方面的优缺点。

谢谢

2 个答案:

答案 0 :(得分:6)

内部的MySQL uses integers用于ENUM字段,所以它不会产生太大的差别。

this test的结果显示与VARCHAR或INT相比,ENUM与JOIN相比有多快,以获取字符串值。

答案 1 :(得分:4)

可以使用:

ENUM("Dog", "Cat", "Fish");

内部MySQL将枚举值存储为整数。所以在这种情况下,不需要在PHP中执行额外的优化。