首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库、表和列的不同字符集和排序规则会导致性能问题吗?

数据库、表和列的不同字符集和排序规则会导致性能问题吗?
EN

Stack Overflow用户
提问于 2015-02-18 15:30:58
回答 1查看 692关注 0票数 4

我正在使用ASP.net开发一个网站,我的数据库是MYSQL。

在那里,我不希望用户只限制张贴英文内容到我的网站。因此,为了支持多语言,我决定使用字符集作为Utf8MB4,使用排序规则作为utf8_general_ci。

现在我有几个问题要问。

1)我是否应该将数据库的字符集设置为Utf8MB4和utf8_general_ci的排序规则?

( 2)使用数据库的字符集作为Latin1,使用排序规则作为swedsh_ci,在表级别上,是否应该将字符集表作为Utf8MB4,而将排序规则用于utf8_general_ci?

3)将数据库的字符集设置为Latin1,排序规则用作swedesh_ci,表中也使用Latin1和swedesh_ci,在列中,是否应将字符集设置为Utf8MB4和utf8_general_ci的排序规则?

所以我在这里很困惑。不同的字符集和排序规则会导致性能问题吗?什么是最好的方法?

EN

回答 1

Stack Overflow用户

发布于 2015-02-18 16:36:49

对于多语言应用程序来说,utf8mb4utf8_general_ci是很好的选择。最好为DDL中的每个表(表定义)详细说明这些内容,并避免依赖默认值。

确保会话的字符集值与表匹配也是一个好主意。可以通过设置服务器范围(不是数据库)默认值,或者在从程序连接后立即发出SQL命令来实现这一点。

代码语言:javascript
复制
  SET CHARACTER SET utf8mb4

一般来说,将mysql服务器配置为保存服务器范围内的utf8utf8mb4utf8_general_ci的默认值是个好主意。这里已经解释过了。http://dev.mysql.com/doc/refman/5.6/en/charset-applications.html

列上的索引与列的排序规则匹配。可以通过在查询上指定特定的排序规则来避免索引的使用。例如,如果您的默认排序规则是utf8_general_ci,但是您想要西班牙语排序规则(它区分N和N),那么您可以在查询中这样做。

代码语言:javascript
复制
ORDER BY surname COLLATE utf8_spanish_ci

这将产生正确的结果,但它不能在列上使用索引,因为该列的默认排序规则已写入索引中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28587333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档