Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL排序规则

MySQL中的排序规则

作者:云满笔记

这篇文章主要介绍了MySQL中的排序规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1. 什么是排序规则

在新建 MySQL 数据库或表的时候经常会选择字符集和排序规则。

数据库用的字符集大家都知道是怎么回事, 那排序规则是什么呢?

排序规则:

是指对指定字符集下不同字符的比较规则。

其特征有以下几点

utf-8 有默认的排序规则

命令: SHOW CHARSET LIKE 'utf8%';

区别:

2. 对比

说明: ci 是 case insensitive, 即 “大小写不敏感”, aA 会在字符判断中会被当做一样的。

bin 是二进制, aA 会别区别对待。

例如你运行:

SELECT * FROM table WHERE txt = 'a'

那么在 utf8_bin 中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以。

utf8_general_ci 是一个遗留的 校对规则, 不支持扩展, 它仅能够在字符之间进行逐个比较。

这意味着 utf8_general_ci 校对规则进行的比较速度很快, 但是与使用 utf8_unicode_ci 的校对规则相比, 比较正确性较差。

3. 应用上的差别

1.对于一种语言仅当使用 utf8_unicode_ci 排序做的不好时, 才执行与具体语言相关的 utf8 字符集校对规则。

例如, 对于德语和法语, utf8_unicode_ci 工作的很好, 因此不再需要为这两种语言创建特殊的 utf8 校对规则。

2.utf8_general_ci 也适用与德语和法语, 除了 ? 等于 s, 而不是 ss 之外。

如果你的应用能够接受这些, 那么应该使用 utf8_general_ci, 因为它速度快。

否则, 使用 utf8_unicode_ci, 因为它比较准确。

4. 使用

utf8_unicode_ci 比较准确, utf8_general_ci 速度比较快。

通常情况下, 新建数据库时一般选用 utf8_general_ci 就可以了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文