sách gpt4 ai đã đi

mysql 查询 - 为一个巨大的表优化现有的 MAX-MIN 查询

In lại 作者:行者123 更新时间:2023-11-29 00:51:58 26 4
mua khóa gpt4 Nike

我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。
所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000 ~2,619,395 个条目,并且还在增加。

架构:

num | station | fetchDate | exportValue | error
1 | PS1 | 2010-10-01 07:05:17 | 300 | 0
2 | PS2 | 2010-10-01 07:05:19 | 297 | 0
923 | PS1 | 2011-11-13 14:45:47 | 82771 | 0

解释

  • exportValue 总是递增的
  • exportValue代表实际的绝对值
  • 在我的例子中有 10 个站点
  • 每 ~15 分钟向表中写入 10 个新条目
  • 错误只是正确工作站的指标

工作查询:

lựa chọn
YEAR(fetchDate), station, Max(exportValue)-MIN(exportValue)
từ
registros
Ở đâu
exportValue > 0 and error = 0
group
by station, YEAR(fetchDate)
order
by YEAR(fetchDate), station

Đầu ra:

Year | station | Max-Min
2008 | PS1 | 24012
2008 | PS2 | 23709
2009 | PS1 | 28102
2009 | PS2 | 25098

我的看法:

  1. 使用诸如“2008-01-01 和 2008-01-02 之间”之类的语句编写多个查询以获取 MIN(exportValue) 并在 2008-12-30 和 2008-12-31 之间获取 MAX( exportValue) - 问题:查询次数多,指定时间范围内没有数据的问题(不保证一定有数据)
  2. 使用 order by MIN(fetchDate) 将结果集限制为我的 10 个站 - 问题:处理查询也需要很长时间

附加信息:
我在 JAVA 应用程序中使用查询。这意味着,如有必要,可以对结果集进行一些后处理。 (JPA 2.0)

非常感谢任何帮助/方法/想法。提前致谢。

1 Câu trả lời

添加合适的索引会有所帮助。2 个复合索引将显着加快速度:

ALTER TABLE tbl_name ADD INDEX (error, exportValue);
ALTER TABLE tbl_name ADD INDEX (station, fetchDate);

关于mysql 查询 - 为一个巨大的表优化现有的 MAX-MIN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8119944/

26 4 0
Bài viết được đề xuất: android - 隐藏工具栏布局线
Bài viết được đề xuất: php - 如何仅保存正在发布的行的 ID
Bài viết được đề xuất: iOS-charts雷达图删除标签并用颜色填充网络
Bài viết được đề xuất: Android:不会一次列出所有项目
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com