【问题标题】:Mysql IN(VARCHAR) vs IN(INT)Mysql IN(VARCHAR) 与 IN(INT)
【发布时间】:2013-10-02 13:39:01
【问题描述】:

我需要在 多对多关系中选择 VARCHARINT

Mysql中做IN('1','21','311')IN(1,21,311)会更快吗?

【问题讨论】:

  • 一般来说mysql在处理整数时会更快。
  • 根本不要通过识别关系来使用IN()。使用EXISTS()。无论如何,请使用外键 ID(整数)。

标签: mysql int varchar


【解决方案1】:

您将尽可能使用整数,因为它们的表示是固定长度的,默认为四个字节,并且比较是通过单个操作完成的。索引和比较字符串总是更昂贵,但字符串越长,差异越大。

在您的示例中,使用非常小的数字,它们的性能可能大致相同。但是,对于具有 6 位或 7 位数字的真实数字,您会看到更大的差异。

【讨论】:

  • 谢谢,DanFromGermany 之前在 cmets 中提到的 INEXISTS 之间的区别是什么?
  • 我只看到EXISTSsubqueries 一起使用,而不是固定列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 2012-12-07
  • 1970-01-01
相关资源
最近更新 更多