MySQL枚举.是使用字符串还是数字更好?


MySQL enum. Is it better to use strings or numbers

我对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内部执行额外的优化