【问题标题】:Multi-column index combined with unique index efficiency多列索引结合唯一索引效率
【发布时间】:2013-09-05 15:14:39
【问题描述】:

我们有一个包含多个列的表,我们的一个列上有一个UNIQUE 索引(我们称之为GBID),我们还有另一列(我们称之为flag)没有指标。这个表可能很大,我们查询WHERE gbid IN () AND flag = 1很多,我们偶尔查询WHERE gbid = "XXX",很少查询WHERE flag = 1

在指数方面哪个更有效:

  1. gbid 用作UNIQUEflag,但没有索引
  2. gbid 设置为UNIQUE 并拥有(gbid, flag) 的多列索引
  3. gbid 设置为UNIQUE 并拥有(flag, gbid) 的多列索引

【问题讨论】:

    标签: mysql performance indexing multiple-columns


    【解决方案1】:

    这取决于 flag=1 的行的百分比,以及您选择的行数(IN 子句中有多少 gbid)。

    • 如果它较低 (1-2%) 并且您选择了很多 gbid,则选项 2 和 3 可能会更快(我认为在这种情况下选项 3 会更好)。
    • 如果您的标志值分布更均匀,则将其包含在索引中不会有任何影响。

    如果您想确定应该使用真实数据样本对其进行基准测试。

    【讨论】:

      猜你喜欢
      • 2013-01-28
      • 2016-11-30
      • 2012-03-24
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2017-02-19
      相关资源
      最近更新 更多