MySQL: 使用 MEMORY STORAGE ENGINE 提高查询性能

MySQL: using the MEMORY STORAGE ENGINE to improve the performance of this queries

我有这个用例:我需要多次执行相同的 "logic" 查询,固定次数,相同的 table (相同的语义,仅改变与比较 "WHERE" 个语句。

查询布局:

SELECT [(SUM(col_name),col_name,...)]
FROM table_name
WHERE expr AND expr...

我假装提高了这项任务的表现。

通过阅读我在这里找到的有关此问题的文章以及一些额外的研究,我可以指出以下相关事实:

如果我在内存(RAM,ENGINE=MEMORY)中创建一个临时 table 来镜像有问题的 table,然后在这个内存中 table 上执行所有查询, 我可以提高性能吗?:

CREATE TABLE tmp_table_name ENGINE=MEMORY SELECT * FROM table_name;

Perform the queries over tmp_table_name

DROP TABLE tmp_table_name;

MySQL docs: The MEMORY (HEAP) Storage Engine

谢谢。

内存会提高性能吗?大部分没有。

不行,不能用MEMORY就不能用MEMORY - see limitations

不,如果您花费太多时间创建 table,MEMORY 会变慢。

否,因为副本不是最新的。 (好的,也许这不是问题。)

不,因为您正在从其他缓存中窃取,使 其他 查询变慢。

否 -- 如果 VARCHARs 在您的版本中变成 CHARs,MEMORY table 可能比非 MEMORY table 大得多,其他问题就会发挥作用。

也许 -- 如果一切都缓存在 RAM 中,MEMORY 将 运行 以大致相同的速度。

您的特定示例可能会被加速

  • 使用 suitable "compound" 索引。 (请向我们展示您的 SELECT 的详细信息)
  • 创建和维护汇总表 -- 如果这是一个 "Data Warehouse" 应用程序。 (再次,让我们看看细节。)