mysql - 帮助简化此 MySQL 查询

标签 mysql optimization

我正在设置一个系统来跟踪电子游戏的每日挑战。有 4 项每日挑战和一项每周挑战。每个挑战都被保存到一个带有 id 的表中,如果挑战被重用(它们是,大约 22% 的时间),它可以被重用。我有另一个表来存储每天的挑战,它看起来像这样:

日期 |每日1 |每日2 |每日 3 |每日4 |过期

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

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

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

最佳答案

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

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

关于mysql - 帮助简化此 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5502114/

相关文章:

mysql - 环回 - ACL - 'property' DB 表中的默认值?

css - 使 Angular 应用程序中的背景图像加载速度更快

c++ - map 数据结构优化图

python - 根据 python 中的用户输入更新多个变量之一

Mysql 查询加减法

php - 需要帮助来设计休假申请模块 php 的数据库

mysql - 如何更改表的默认排序规则?

c# - .NET (C#) 中 64 位应用程序的性能优势

php - 如何避免每次循环运行时都进行查询? (优化代码)

php - 如何从按特定字段分组的数据库中回显数据,然后将它们打印到单独的表中