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

luk*_*nis 1 php mysql

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

例如:

ENUM("Dog", "Cat", "Fish");
Run Code Online (Sandbox Code Playgroud)

VS

ENUM(1,2,3);
Run Code Online (Sandbox Code Playgroud)

然后使用类似的东西:

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

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

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

谢谢

Mat*_*hew 6

MySQL在内部对ENUM字段使用整数,因此它不会产生太大的差别.

此测试的结果显示ENUM与VARCHAR或INT相比,使用JOIN获取字符串值的速度有多快.