0

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

在指数方面哪个更有效:

  1. gbid和没有UNIQUE索引flag
  2. 具有gbidasUNIQUE并具有多列索引(gbid, flag)
  3. 具有gbidasUNIQUE并具有多列索引(flag, gbid)
4

1 回答 1

0

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

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

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

于 2013-09-05T15:32:16.450 回答