代码之家  ›  专栏  ›  技术社区  ›  Kamil Kiełczewski

utf8 unicode和utf8mb4的区别是什么

  •  0
  • Kamil Kiełczewski  · 技术社区  · 6 年前

    有什么区别 utf8mb4_0900_ai_ci utf8_unicode_ci mysql中的数据库文本编码(特别是性能方面)?

    0 回复  |  直到 6 年前
        1
  •  6
  •   bernie    5 年前
    • 这个 编码 是一样的。也就是说,字节看起来是一样的。
    • 字符集 是不同的。utf8mb4有更多字符。
    • 校勘 (如何比较)是不同的。
    • 表现

    utf8_unicode_ci 意味着 CHARACTER SET utf8

    utf8mb4_unicode_ci 意味着 CHARACTER SET utf8mb4 是相应的 COLLATION 对于4字节 .

    Unicode组织多年来一直在改进规范。以下是从其“版本”到MySQL排序规则的映射:

    4.0   _unicode_
    5.20  _unicode_520_
    9.0   _0900_
    

    后缀( MySQL doc ):

    _bin      -- just compare the bits; don't consider case folding, accents, etc
    _ci       -- explicitly case insensitive (A=a) and implicitly accent insensitive (a=á)
    _ai_ci    -- explicitly case insensitive and accent insensitive
    _as (etc) -- accent-sensitive (etc)
    

    性能:

    _bin         -- simple, fast
    _general_ci  -- fails to compare multiple letters; eg ss=ß, so somewhat fast
    ...          -- slower
    _900_        -- (8.0) much faster because of a rewrite
    

    但是:排序的速度通常是查询中性能问题最少的。 INDEXes , JOINs