gpt4 book ai didi

mysql - 在 MySQL 中使用字符串枚举 - 性能问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:36 24 4
gpt4 key购买 nike

我目前在 MySQL 数据库中使用枚举作为 TINYINT。我的表中有几百万行。然后我们将枚举从 TINYINT 映射到其他地方的字符串。

我正在考虑将这些枚举存储为字符串。如果字符串索引正确,有人知道 MySQL 在查询字符串枚举而不是 TINYINT 枚举时的表现吗?

感谢帮助。谢谢。

最佳答案

枚举的存储就像有一个查找表一样,因此每行仅存储一个数字引用,其他地方有一个查找表。从技术上讲,匹配枚举的整数值与匹配整数一样快,因为两者是相同的,匹配字符串值稍微慢一点(在所有情况下都是一个),仅仅是因为只完成了一次“搜索”,通过查找表以查找整数值,然后使用该整数值执行查找。

一个例子是如果你搜索一个不存在的值,尝试匹配一个不存在的值的枚举数值,它仍然会搜索所有数据,但是尝试匹配一个字符串不存在的值,并通过查找表进行较小的搜索,在搜索任何数据之前不返回任何匹配项。

不要对“是/否”或“男性/女性”答案使用枚举,因为数字数据和查找表比“位”值(0 或 1)占用更多空间。另外,不要在枚举定义中使用数字字符串,例如enum("1","0") 因为这会让任何查看代码和查询的人感到困惑(因为存储的查找表是 [0 => "1", 1 => "0"]。

关于mysql - 在 MySQL 中使用字符串枚举 - 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com