Mysql UTF8\u常规\u ci排序需要几秒钟的时间来处理

Mysql UTF8\u常规\u ci排序需要几秒钟的时间来处理,mysql,collation,Mysql,Collation,我在整理utf8\u general\u 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','133647

我在整理utf8\u general\u 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时,需要几秒钟的时间,它会立即加载。这是什么主要原因,我应该使用哪个排序规则?请记住,UTF8需要2倍的空间来保存UTF8字符。1个UTF8字符将存储为2个描述它的字符。 因此,比较UTF8字符串需要两倍以上的时间。 上面的语句与拉丁1符号无关,因为它们将像往常一样存储

请发布完整的CREATETABLE语句。我可以假设问题在于索引。 快跑
show create table general
并在这里发布输出


顺便说一句:对于DB来说,排序是非常耗时的操作,因此您必须使用索引来加快排序速度。

我猜您在一个多列索引中有所有三列

如果是这样,那么使用utf8,它们将不适合。MySQL必须扫描行。InnoDB中的MySQL索引限制为767字节(MyISAM为1000字节),并且索引的宽度是固定的,因此UTF8索引的大小是单字节编码索引的三倍

使用UTF8只能在索引中放入一列


因此,使用单字节编码,MySQL可以充分利用索引,而使用多字节编码,MySQL无法充分利用索引。

请发布CREATE TABLE语句,您针对表运行的查询,和表中的一小部分示例行。我不能使用任何其他排序规则来代替utf8\u general\u ciIam进行更新、插入、删除,因此我认为我需要避免索引进行更新、插入、删除,因此我认为我需要避免索引你在做更多的选择或更改什么?