2009-01-21 39 views

回答

4

latin1_swedish_ci是一個一個八位字節的字符編碼系統。一旦你知道比較字符和整個字符串的排序(或排序)順序是相對平凡的。

utf8_general_ci每個字符需要1到4個八位字節。在這種編碼中解碼八位位組數據更困難,所以需要更長的時間。

2

我自己並不經常使用mysql,但我可能會對問題的出處提供一些見解。

latin1_swedish_ci字符集是一個八位字節編碼系統,這意味着用這個系統編碼的每個字符都只佔用一個字節。將其與utf8_general_ci字符集進行對比,其中每個字符由每個字符1到4個八位字節組成,這意味着需要1到4個字節來表示每個字符。

這有一個明顯的缺點,即utf8字符佔用更多的空間,更多的內存,最重要的是,更多的cpu時間來識別。最明顯的優勢是utf8字符可以編碼任何unicode字符。

由於此問題標有'查詢優化',所以您需要問自己,您是否真的需要表示更多'異國情調'的字符,或者如果是單字節系統中表示的字符(例如純ASCII - 表)足夠滿足您的需求。由於其性質,utf8會吃更多的CPU /內存。

0

你的查詢是怎樣的?

是否可以在該字段上使用過濾器,並且指定參數的數據類型爲非utf8數據類型?在這種情況下,數據庫管理系統將不得不進行一些鑄造,這會妨礙性能。

+0

該字段純粹用於by和where子句中的其他tinyint(1)字段。 – 2009-01-21 18:31:00

相關問題