gpt4 book ai didi

mysql - 使用 utf8 字符集索引 MySQL 表列的有效方法

转载 作者:行者123 更新时间:2023-11-29 03:46:41 25 4
gpt4 key购买 nike

CREATE TABLE profile_category (
id mediumint UNSIGNED NOT NULL AUTO_INCREMENT,
pc_name char(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY idx_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这是数据库中完全采用 utf8 字符集的表之一。问题就在这里(我直到现在才知道)pc_name 列的索引将增加三倍,因为 MySQL 为每个字符保留 3 位。在这种情况下,索引将占用更多空间。

我不能制作更短的索引,因为我需要这个值是唯一的。解决方案之一是设置 pc_name char(255) CHARSET latin1 NOT NULL, 但我不知道这是否是个问题。这是个好主意,还是有什么我不知道的解决方案?

更新:pc_name 列在应用程序中被验证为有效的 utf8。它允许非西方字符。但在这种情况下,如果值得的话,我可以只允许 /[_A-Za-z]/ 进行交易。

更新 2:我尝试将 pc_name 设置为 latin1 字符集,但现在我得到如下异常:Zend_Db_Statement_Exception: SQLSTATE[HY000]: General error: 1267 Illegal mix of collat​​ions (latin1_swedish_ci, IMPLICIT) 和 (utf8_general_ci,COERCIBLE) 用于操作 '='

最佳答案

如果 pc_name 将包含非西方文本,那么 latin1 将不会成为此处的选项 - 否则,请使用它。

我不是 MySQL 的核心用户,我不知道混合使用 InnoDB 和 MySQL 表是否充满问题 - 如果没有,也许您可​​以将此表设为标准 MySQL 表并将其保留为 utf8?

关于mysql - 使用 utf8 字符集索引 MySQL 表列的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3435681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com