mysql - UTF8_general_ci 排序规则需要几秒钟来处理

标签 mysql collation

我用排序规则 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/

相关文章:

PHP/MySQL 外键以 id=0 的形式保存到数据库

php - JQuery UI 对话框 - 只有第一个链接有效

php - 将空值传递给 mysql 数据库

mysql - 在 DynamoDB 中创建一个表,并使用 2 "columns"作为键(复合键)

mysql - #1271 - 操作 'UNION' 的排序规则混合非法

mysql - 如何将 latin1_swedish_ci 转换为 utf8-general-ci

Laravel 中正确字符和排序规则的 MySQL 设置

php - 找不到输出

MySQL 混合字符集和排序规则

mysql - 是否可以删除 mysql 表排序规则?