我在 2005 年的 MySQL 论坛上发现了一个帖子,但没有比这更近的了。基于此,这是不可能的。但是很多东西会在 3-4 年内发生变化。
我正在寻找的是一种在视图上建立索引但让被查看的表保持未索引的方法。索引会损害写入过程,并且该表的写入频率很高(索引会减慢所有内容的爬行速度)。但是,缺少索引使我的查询非常缓慢。
我在 2005 年的 MySQL 论坛上发现了一个帖子,但没有比这更近的了。基于此,这是不可能的。但是很多东西会在 3-4 年内发生变化。
我正在寻找的是一种在视图上建立索引但让被查看的表保持未索引的方法。索引会损害写入过程,并且该表的写入频率很高(索引会减慢所有内容的爬行速度)。但是,缺少索引使我的查询非常缓慢。
我不认为 MySQL 支持您需要的物化视图,但无论如何它在这种情况下对您没有帮助。无论索引是在视图上还是在底层表上,都需要在底层表更新期间的某个时间点进行写入和更新,因此仍然会导致写入速度问题。
您最好的选择可能是创建定期更新的汇总表。
您是否考虑过从分析处理数据中抽象出事务处理数据,以便它们都可以专门化以满足其独特的需求?
基本思想是您拥有一个定期修改的数据版本,这将是事务处理方面,需要大量标准化和轻型索引,以便写入操作快速。数据的第二个版本是为分析处理而构建的,并且趋向于标准化程度较低,并且索引较多以用于快速报告操作。
围绕分析处理构建的数据通常围绕数据仓库的立方体方法构建,由表示立方体侧面的事实表和表示立方体边缘的维度表组成。
Flexviews通过跟踪对基础表的更改并更新用作物化视图的表来支持 MySQL 中的物化视图。这种方法意味着视图支持的 SQL 有点受限(因为更改日志记录例程必须确定它应该跟踪哪些表的更改),但据我所知,这是您可以在 MySQL 中获得的最接近物化视图的方法.
你只想要一个索引视图吗?写入只有一个索引的表不太可能具有破坏性。没有主键吗?
如果每条记录都很大,您可以通过弄清楚如何缩短它来提高性能。或者缩短您需要的索引长度。
如果这是一个只写表(即您不需要进行更新),那么在 MySQL 中开始归档它可能是致命的,或者以其他方式删除记录(和索引键),需要开始填充索引(重用)来自已删除键的插槽,而不仅仅是附加新的索引值。违反直觉,但在这种情况下,您最好使用更大的表。