我对MySQL的ENUM数据类型很好奇。例如,如果我有几个可能的字符串字段是更好地使用字符串,或只是一个数字,然后解码成字符串使用例如PHP?
例如:ENUM("Dog", "Cat", "Fish");
和
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是最好的情况吗?
我想知道性能和空间方面的优点/缺点。
谢谢
MySQL在内部使用整数作为ENUM字段,所以它不会造成太大的差异。
这个测试的结果显示了ENUM
与VARCHAR或带JOIN的INT相比获得字符串值的速度有多快。
可以使用:
ENUM("Dog", "Cat", "Fish");
MySQL内部将枚举值存储为整数。所以在这种情况下,不需要在PHP内部执行额外的优化