我用排序规则 utf8_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');
现在,当我选择记录并对它们进行排序时,需要几秒钟的时间,而当我使用armcii_general_c1时,它会立即加载。这样做的主要原因是什么以及我应该使用哪种排序规则
最佳答案
我猜您在多列索引中拥有所有三列?
如果是这样,那么对于 utf8,它们将不适合。 MySQL 必须扫描行。 MySQL索引在InnoDB中限制为767字节(MyISAM为1000字节),并且索引是固定宽度的,因此UTF8索引是单字节编码索引大小的三倍。
您只能将一列放入使用 UTF8 的索引中。
因此,使用单字节编码时,MySQL可以充分利用索引,而使用多字节编码时,MySQL无法充分利用索引。
关于mysql - UTF8_general_ci 排序规则需要几秒钟来处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451873/