2009-01-21 32 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

相关问题