【问题标题】:Better use "smallint" or "bit"?更好地使用“smallint”还是“bit”?
【发布时间】:2014-04-19 11:19:36
【问题描述】:

我一直认为bit 在 MySQL 和 MSSQL 等数据库中比 smallint 快。

现在一位同事说bit 无法被索引(我知道),因此最好始终使用smallint,即使值始终只是01

我认为smallint 上的索引只有01 没有任何优势,因为不同值的数量很少...

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: sql boolean


    【解决方案1】:

    你的同事很天真 - 至少声明是,因为它确实忽略了手头的真正问题。

    位可以被索引,但是只有 2 个值的索引有用的机会接近于零,这就是为什么在大多数查询中永远不会使用它的原因。这不是 bit 固有的,而是它只有两个值的事实。

    如果索引是 smallint,同样会发生同样的情况,因为它仍然只有两个值。同样的问题是选择性不够,基本上很可能根本不使用,尤其是在存在任何其他索引的情况下。

    现在,从逻辑上讲,bit 的下一步不是 smallint,而是 tinyint - 一半大小。

    位在存储方面具有优势。它们只能占用一位...如果您有多个:

    http://technet.microsoft.com/en-us/library/ms177603.aspx

    一个字节最多可存储 8 个。

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 2011-03-24
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      相关资源
      最近更新 更多