2011-10-08 77 views
1

最近,我研究關於MySQL的性能和最佳實踐,而最近我發現了ENUM領域具有更好的性能:http://www.mysqlperformanceblog.com/2008/01/24/enum-fields-vs-varchar-vs-int-joined-table-what-is-faster/在MySQL的ENUM字段中使用符號,這是一個好主意嗎?

但是我想知道,如果它是一個好主意,設置ENUM場符號,因爲我目前有一個ENUM字段,包含「Positive」,「Negative」,「Neutral」,並且正在考慮做一些類似ENUM('+',' - ','=')的操作來抽象數據並保存這張桌子有一些空間。 此字段將受到連接(因此索引),其中語句,組bys等

這是一個好方法嗎?我不想後來發現這不是要走的路。

回答

3

它會讓你絕對零速。
ENUM更快,因爲它們不是以文本形式存儲,而是以整數形式存儲。

內部的枚舉被存儲爲:查詢被執行

"Positive" => 1 
"Negative" => 2 
"Neutral" => 3 

前MySQL的轉換值設爲其整數表示。
不檢測afield of type string = "Positive"
MySQL將做afield of type tinyint = 1

底線
您將節省沒有空間任何責任。
你將無法獲得任何速度。

我會反對它。

+0

除了空間/性能主題,我個人還沒有聽說過任何MySQL'保留字'或符號,在查詢中使用符號有沒有限制? (除了我正在使用的) –

+0

@ user550178,其實不是,像'''和\和'%'和'_'這樣的符號需要特殊的處理,但是它們很容易通過\ – Johan

-1

我不明白爲什麼這將是一個壞方法。你可能無法獲得如此高的速度......但符號可以準確地表示它們的含義,因此我認爲這不是一個壞主意。

相關問題