索引对 mysql MEMORY 表有帮助吗?

Tal*_*lik 5 mysql memory optimization

我正在优化一个 3 GB 的表作为 MEMORY 表,以便对其进行一些分析,我很好奇添加索引是否有助于 MEMORY 表。既然数据都在内存中,这只是多余的吗?

Ray*_*Ray 4

不,它们并不多余。

是的,继续使用索引。

由于全表扫描在内存中的速度有多快,具有非索引列的较小表上访问内存表的速度可能看起来几乎与索引表相同,但随着表的增长或将它们连接在一起以使得较大的结果集会有差异。

无论引擎使用哪种存储方法(磁盘/内存),只要存储引擎支持,适当的索引就会提高性能。索引的实现方式可能有所不同,但我知道它们是在 MEMORY、INNODB 和 MyISAM 表类型中实现的。顺便说一句:MEMORY 表中索引的默认方法是使用哈希而不是 B 树。

另外,我通常不建议对存储引擎进行编码。今天的内存表明天可能需要更改为 innodb —— SQL 和模式应该独立。