【问题标题】:Using Symbols in MySQL ENUM Fields, is this a good idea?在 MySQL ENUM 字段中使用符号,这是个好主意吗?
【发布时间】:2011-10-08 17:23:24
【问题描述】:

最近在研究MySQL的性能和最佳实践,最近发现ENUM字段的性能更好:http://www.mysqlperformanceblog.com/2008/01/24/enum-fields-vs-varchar-vs-int-joined-table-what-is-faster/

但是我想知道,用符号设置 ENUM 字段是否是个好主意,因为我目前有一个带有“正”、“负”、“中性”的 ENUM 字段,并且正在考虑做类似 ENUM 的事情('+','-','=') 以便抽象数据并在此表中节省一些空间。 该字段将受到连接(因此是索引)、where 语句、分组依据等的影响。

这是一个好方法吗?我不想后来发现这不是要走的路。

【问题讨论】:

    标签: mysql types enums


    【解决方案1】:

    它将使您获得绝对零速度。
    ENUM 更快,因为它们不是以文本形式存储,而是以整数形式存储。

    您的枚举在内部存储为:

    "Positive"  => 1
    "Negative"  => 2
    "Neutral"   => 3
    

    在执行查询之前,MySQL 将值转换为它们的整数表示。
    而不是测试afield of type string = "Positive"
    MySQL 会做afield of type tinyint = 1

    底线
    您将不会节省任何空间。
    你将完全没有速度。

    我建议不要这样做。

    【讨论】:

    • 除了空间/性能主题之外,我个人还没有听说过任何 MySQL 的“保留词”或符号,在查询中使用符号是否有限制? (除了我正在使用的)
    • @user550178,不,不是,' 和 \ 和 %_ 这样的符号需要特殊处理,但它们很容易使用 \ 转义
    【解决方案2】:

    我不明白为什么这是一个不好的方法。您可能不会获得那么多的速度...但是这些符号准确地代表了它们的含义,所以我认为这不是一个坏主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 2010-10-10
      • 2011-02-17
      • 1970-01-01
      • 2011-06-22
      • 2014-09-26
      相关资源
      最近更新 更多