2011-08-25 249 views
1

我对MySQL ENUM数据类型感到好奇。 例如,如果我有几个可能的字符串的字段是使用一个字符串,或只是一个数字,然后将数字解码为字符串使用例如PHP更好?MySQL枚举。使用字符串或数字更好吗

例如:

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; 
?> 

或者是在这种情况下使用TINYINT如果可能最好的情况下条目少于128(1个字节)?

我想知道在性能和空间情况下的优点/缺点。

谢谢

回答

6

MySQL uses integers内部为ENUM字段,所以它不会有很大的区别。

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

4

这是蛮好用的:

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

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