我正在优化一个 3 GB 的表作为 MEMORY 表,以便对其进行一些分析,我很好奇添加索引是否对 MEMORY 表有帮助。由于数据无论如何都在内存中,这只是多余的吗?
最佳答案
不,它们不是多余的。
是的,继续使用索引。
由于全表扫描在内存中的速度有多快,在具有非索引列的较小表上访问内存表的速度可能看起来几乎与索引表相同,但随着表的增长或加入它们一起制作更大的结果集会有不同。
无论引擎使用何种存储方式(磁盘/内存),只要存储引擎支持,适当的索引都会提高性能。索引的实现方式可能不同,但我知道它们是在 MEMORY、INNODB 和 MyISAM 表类型中实现的。顺便说一句:MEMORY 表中索引的默认方法是使用散列而不是 B 树。
此外,我通常不建议对您的存储引擎进行编码。今天的内存表明天可能需要更改为 innodb——SQL 和模式应该独立存在。
关于mysql - 索引对 mysql MEMORY 表有帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14757695/