多列索引结合独特的索引效率

时间:2013-09-05 15:14:40

标签: mysql performance indexing multiple-columns

我们有一个包含多列的表,我们在其中一列上有一个UNIQUE索引(让我们称之为GBID),我们有另一列(让我们称之为{{1} }}没有任何指示。此表格非常大,我们会flag 查询,我们偶尔会查询WHERE gbid IN () AND flag = 1,很少查询WHERE gbid = "XXX"

在指标方面哪个更有效:

  1. WHERE flag = 1gbidUNIQUE为无索引
  2. flag作为gbid并拥有UNIQUE的多列索引
  3. (gbid, flag)作为gbid并拥有UNIQUE的多列索引

1 个答案:

答案 0 :(得分:0)

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

  • 如果它很低(1-2%)并且您选择了很多gbid,则选项2和3可能会更快(我认为选项3在这种情况下会更好)。
  • 如果您在索引中拥有更均匀的标志值分布,则无法发挥作用。

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