我很好奇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是最好的情况吗?
我想知道性能和空间方面的优缺点。
谢谢
答案 0 :(得分:6)
内部的MySQL uses integers用于ENUM字段,所以它不会产生太大的差别。
this test的结果显示与VARCHAR或INT相比,ENUM
与JOIN相比有多快,以获取字符串值。
答案 1 :(得分:4)
可以使用:
ENUM("Dog", "Cat", "Fish");
内部MySQL将枚举值存储为整数。所以在这种情况下,不需要在PHP中执行额外的优化。