2011-08-25 64 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中執行額外的優化。