我在colof ut_8_general_ci中制作了一张表。
CREATE TABLE `general` (
`one` varchar( 250 ) NOT NULL ,
`two` varchar( 250 ) NOT NULL ,
`time` varchar( 250 ) NOT NULL,);
并在其中输入了1000条记录。
insert into general values('ankit','hamitte','13364783'),('john','will','13364783');
现在,当我选择记录并对它们进行排序时,它需要几秒钟,而当我使用armscii_general_c1时,它会立即加载。这主要原因是什么以及我应该使用哪种排序
答案 0 :(得分:1)
我猜你在多列索引中有三列?
如果是这样,那么使用utf8,它们将无法适应。 MySQL必须扫描行。 InnoDB中的MySQL索引限制为767字节(MyISAM为1000),索引为固定宽度,因此UTF8索引的大小是单字节编码索引的三倍。
您只能使用UTF8将一列填入索引。
因此,使用单字节编码,MySQL可以完全利用索引,而使用多字节编码,MySQL无法充分利用索引。
答案 1 :(得分:0)
请记住,UTF8需要2倍的空间来容纳UTF8字符。 1 UTF8 char将存储为描述它的2个字符。 因此,比较UTF8字符串需要两倍的时间。 上述声明与latin1符号无关,因为它们将照常存储。
请发布完整的create table语句。我可能认为问题出在索引中。
赶紧跑
show create table general
并在此处输出。