我正在建立一个跟踪视频游戏日常挑战的系统。每天有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()。有没有其他方法可以简化此查询并仍然获得相同的信息?
答案 0 :(得分:0)
你可以使用IN来清理它,但不要指望这样做会带来任何性能提升。
SELECT date
FROM `current_daily`
WHERE # IN (daily1, daily2, daily3, daily4)
ORDER BY date ASC