【发布时间】:2013-10-02 13:39:01
【问题描述】:
我需要在 多对多关系中选择 VARCHAR 和 INT
在Mysql中做IN('1','21','311')或IN(1,21,311)会更快吗?
【问题讨论】:
-
一般来说mysql在处理整数时会更快。
-
根本不要通过识别关系来使用
IN()。使用EXISTS()。无论如何,请使用外键 ID(整数)。
我需要在 多对多关系中选择 VARCHAR 和 INT
在Mysql中做IN('1','21','311')或IN(1,21,311)会更快吗?
【问题讨论】:
IN()。使用EXISTS()。无论如何,请使用外键 ID(整数)。
您将尽可能使用整数,因为它们的表示是固定长度的,默认为四个字节,并且比较是通过单个操作完成的。索引和比较字符串总是更昂贵,但字符串越长,差异越大。
在您的示例中,使用非常小的数字,它们的性能可能大致相同。但是,对于具有 6 位或 7 位数字的真实数字,您会看到更大的差异。
【讨论】:
EXISTS 与subqueries 一起使用,而不是固定列表。