gpt4 book ai didi

mysql - 在 MySQL 中比较时,转换为 varchar 或 varchar 为 int 更快吗?

转载 作者:行者123 更新时间:2023-11-29 10:56:02 24 4
gpt4 key购买 nike

所以我有两个表,它们的 ID 引用同一对象。其中一个表将其存储为 varchar,另一个表将其存储为 int。我想要子查询(或者可能连接)这两个表。

WHERE foo = CAST(bar AS UNSIGNED)

WHERE CAST(foo AS CHAR) = bar

哪个更好?

编辑:这两个 ID 均未编入索引。

最佳答案

这取决于索引。如果两列都设置了索引,则应转换为 int ,因为它只需要比较4个字节。然而,如果只有varchar列已索引,转换为 varchar .

最后,您应该得到查询 explain ed,查看使用了什么索引,并进行相应的转换。

如果未设置索引,则强制转换为 int一般来说是更好的方法。但是,如果没有设置索引,也没关系,通过索引比选择正确的转换方式可以节省更多时间。再说一遍, table 很小。那么,这也并不重要。

事实上,我们不仅要考虑比较的成本,还要考虑选角的成本:选角intvarchar比解析 varchar 稍快一些到int 。然而,比较至少有 4 个字符的 varchar 将使该优势变得毫无用处。如果您的值往往高于 999,请转换为 int会更快。但这现在取决于您的操作系统、体系结构、mysql 二进制文件使用的指令集等等。获得真正可靠答案的唯一方法是:在目标机器上对这种情况进行基准测试。

关于mysql - 在 MySQL 中比较时,转换为 varchar 或 varchar 为 int 更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43010005/

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