MYSQL-哪个枚举执行更好的枚举(';Y';,';N';)或枚举(';1';,';0';)

MYSQL-哪个枚举执行更好的枚举(';Y';,';N';)或枚举(';1';,';0';),mysql,enums,query-performance,Mysql,Enums,Query Performance,我有一个非常大的MYSQL表,其中包含800000条记录。根据以下参数,我想知道哪种类型的性能更好:Enum('male','female')或Enum(1,0) 储藏 查询性能-就像我将使用 SELECT cols FROM table WHERE type = 'female' or SELECT cols FROM table WHERE type = 0 那么,哪一种表现更好,或者有其他方法来处理这种情况呢?应该没有区别 枚举编码为数字,因此两个示例的结果相同 如果有什么区别的话,您

我有一个非常大的MYSQL表,其中包含800000条记录。根据以下参数,我想知道哪种类型的性能更好:Enum('male','female')或Enum(1,0)

  • 储藏
  • 查询性能-就像我将使用

    SELECT cols FROM table WHERE type = 'female'
    or
    SELECT cols FROM table WHERE type = 0
    

  • 那么,哪一种表现更好,或者有其他方法来处理这种情况呢?

    应该没有区别

    枚举编码为数字,因此两个示例的结果相同


    如果有什么区别的话,您应该将使用某种枚举与使用varchar、bit或numeric列(可能是由约束强制的范围)进行比较。

    应该没有任何区别

    枚举编码为数字,因此两个示例的结果相同


    如果有什么区别的话,您应该将使用某种枚举与使用varchar、bit或numeric列(可能是由约束强制的范围)进行比较。

    我已经在MYSQL中测试了这一点,我的发现如下所示:

  • 当我们比较ENUM('male','female')和ENUM('1','0')时,性能没有差异

  • 我已经在MYSQL中测试了这个东西,我的发现如下:

  • 当我们比较ENUM('male','female')和ENUM('1','0')时,性能没有差异


  • 存储和性能应该相同。您可能想阅读这篇关于枚举使用的文章:也许使用枚举不是最佳选择。另一种方法是将类型存储在一个单独的表中,并使用外键和联接,这可能更利于数据完整性;在where子句中使用“1”比使用“Y”性能更好;是吗?@JatinSeth:为什么会这样?800000行算不了什么。此外,你可以在更短的时间内测试这个问题,而不是问和回答这个问题。是的,但我想和天才们讨论一下事实:)存储和性能应该是一样的。您可能想阅读这篇关于枚举使用的文章:也许使用枚举不是最佳选择。另一种方法是将类型存储在一个单独的表中,并使用外键和联接,这可能更利于数据完整性;在where子句中使用“1”比使用“Y”性能更好;是吗?@JatinSeth:为什么会这样?800000行算不了什么。此外,你可以用比提问和回答这个问题更少的时间来测试这个问题。是的,但我想和天才们讨论一下事实:)是的。枚举被编码为数字。您为枚举选项指定的名称并不重要。在表和索引中,列值存储为0,1,2,…。是的,你说得很对,但是你能告诉我为什么我使用TINYINT而不是ENUM时性能会提高吗?我想知道Mysql是如何处理这些的。TINYINT不太可能有显著的性能差异。如果您对此感兴趣,请发布一个新问题,并确保包含完整的观察结果(包括解释查询命令的输出)。
    TINYINT
    可能运行得更快,因为它与您运行测试时缓存的内容相一致。你们每个人都跑了两次吗?当查询缓存被禁用时(
    SQL\u NO\u cache
    )?是。枚举被编码为数字。您为枚举选项指定的名称并不重要。在表和索引中,列值存储为0,1,2,…。是的,你说得很对,但是你能告诉我为什么我使用TINYINT而不是ENUM时性能会提高吗?我想知道Mysql是如何处理这些的。TINYINT不太可能有显著的性能差异。如果您对此感兴趣,请发布一个新问题,并确保包含完整的观察结果(包括解释查询命令的输出)。
    TINYINT
    可能运行得更快,因为它与您运行测试时缓存的内容相一致。你们每个人都跑了两次吗?在禁用查询缓存(
    SQL\u NO\u cache
    )的情况下,检查8条lac记录时,相同的查询使用ENUM花费0.124秒,使用TINYINT花费0.072秒。检查8条lac记录时,相同的查询使用ENUM花费0.124秒,使用TINYINT花费0.072秒。