对大型 MySQL 表的多个查询

Posted

技术标签:

【中文标题】对大型 MySQL 表的多个查询【英文标题】:Multiple Queries to a Large MySQL Table 【发布时间】:2011-08-05 17:58:52 【问题描述】:

我有一个包含 ID(int)、Number(decimal) 和 Date(int only timestamp) 列的表。有数百万行。 ID和Date都有索引。

在我的许多页面上,我都会查询四五次以获取指定日期范围内的数字列表(每个查询的范围不同)。

喜欢:

select number,date where date < 111111111 and date >111111100000

我正在查询这些数据集以放置在几个不同的图表上。 “今天与昨天”、“本月与上个月”、“今年与去年”。

使用 sql 语句查询最大可能的结果集,然后使用我的编程语言通过排序和拼接数组过滤查询是否比等待每个 0.3 秒查询完成更好?

还有什么可以加快速度的吗?

【问题讨论】:

感谢您到目前为止的回答。归根结底,我将有一个包含 6 个图表的页面。我将不得不多次查询 1-2000 万行的数据表,以用必要的线条填充图表。我对大桌子没有经验,所以不确定该怎么做。 5 秒的页面加载时间是不可避免的吗? 你检查过什么真的很慢吗? 是的,我原始问题中的日期查询。我需要在这个页面上查询几个不同日期范围的数据,上面有几个图表。我需要查询一年的数据、一个月的数据、一天的数据、一周的数据、最近几周的数据、最近几个月的数据、最近几年的数据、过去 3 年的数据等。所有用于不同的图表。 【参考方案1】:

这取决于结果集和查询的执行速度。这个问题没有最终答案。

如果你真的需要加快速度,你应该对结果进行基准测试和计算。

但请记住,应避免使用premature optimization,否则您将在代码中实现已经实现的逻辑,其中可能包含错误等。

【讨论】:

【参考方案2】:

虽然它可能会导致查询执行得更快,但如果您要尝试加载整个记录范围然后以编程方式聚合它,您必须问问自己对内存的潜在影响。

基于索引的 mysql 优化可能会比你想出的任何东西都表现得更好,所以这听起来是个坏主意。

【讨论】:

以上是关于对大型 MySQL 表的多个查询的主要内容,如果未能解决你的问题,请参考以下文章

大型单表的 MySQL 查询优化 [关闭]

如何管理跨多个表的大型数据集? UNION 与大表?

AWS RDS 大型实例上的 MySQL 全文搜索速度极慢

搜索具有相关性的大型 mysql 数据库

优化大型子表的日期查询:GiST 还是 GIN?

我可以在不创建实体类的情况下对大型 sql 使用休眠命名查询吗?