2013-04-11 45 views
4

我使用'id'字段 - char(22)作爲MySQL表的主鍵。 此字段僅用於在將新用戶添加到表格時過濾唯一ID。utf8_bin與utf8_general_ci。哪種整理將在mysql表中提供更快的性能?

對我來說,使用utf8_binutf8_general_ci排序規則並不重要,因爲字母大小寫無關緊要,我只使用英文字母作爲id。

唯一的問題是: 哪種整理會提供更快的性能?

我的表最常用的查詢是:

LOAD DATA INFILE ... IGNORE INTO TABLE mytable(id) 
or 
INSERT IGNORE INTO mytable(id)... 
and 
SELECT COUNT(id) FROM mytable 
現在

,我看不到任何性能差別,因爲該表並不大,但是當行的在我的表數超過會發生什麼200萬?

將utf8_general_ci歸類爲INSERT或LOAD IGNORE和SELECT COUNT查詢提供更快的性能嗎?

回答

5

一般而言,utf8_bin將至少與utf8_general_ci一樣快,因爲it does not perform any processing的二進制數據不是識別多字節字符。

也就是說,id列中的索引的存在以及您僅查找檢測重複項而不排序的事實應該表示將不存在可檢測到的差異。然而,這只是一個受過教育的猜測,所以我可能是錯的(即使它看起來不太可能)。

相關問題