在设计数据库的过程中,我有以下列,我不确定使用哪个字符集:
id :20个ascii字符但所有字母都很小。我可以利用这个事实来节省空间吗?我会在此基础上进行搜索,作为主键。
关于:应支持utf8,最多256个字符。我永远不会在此基础上进行排序,也不会基于此进行搜索。我应该使用utf8_general_ci还是utf8_unicode_ci?
答案 0 :(得分:0)
您需要使用INT
列作为PRIMARY KEY
。 MySQL在所有派生索引中都使用它,因此如果选择非INT
密钥,则会有很大的开销需要处理。
如果您需要一个不同的辅助“标识符”列,例如20个字符,请将该列定义为VARCHAR
并为其指定UNIQUE
索引约束。
您的描述中没有任何内容违背使用UTF-8作为编码的合理默认值。您正在讨论的两个选项是 collation ,它具体指的是排序顺序,字符等效和大/小写映射等内容。那些更主观。
您预计需要存储多少条记录?除非你正在处理数以亿计的这些事情,否则它甚至不值得为字节而烦恼。