帮助简化此MySQL查询

时间:2011-03-31 15:12:00

标签: mysql optimization

我正在建立一个跟踪视频游戏日常挑战的系统。每天有4次挑战,每周挑战一次。每个挑战都会被保存到一个带有id的表中,可以重复使用它,挑战可以重复使用(它们是大约22%的时间)。我有另一张表来存储每一天的挑战,它看起来像这样:

日期| daily1 | daily2 | daily3 | daily4 |期满

由于重复使用了挑战,我希望能够通过其ID查找其他使用挑战的日子。我现在正在使用此查询:

SELECT date FROM `current_daily`
  WHERE daily1 = #
    OR daily2 = #
    OR daily3 = #
    OR daily4 = #
  ORDER BY date ASC

它有效,但它太笨重了。我试图找到一个更好的是运行此查询所以我不需要所有的OR,但由于它从多个列获取信息,它看起来不像我可以使用IN()。有没有其他方法可以简化此查询并仍然获得相同的信息?

1 个答案:

答案 0 :(得分:0)

可以使用IN来清理它,但不要指望这样做会带来任何性能提升。

SELECT date 
    FROM `current_daily`
    WHERE # IN (daily1, daily2, daily3, daily4)
    ORDER BY date ASC