2008-10-28 46 views
29

我发现a posting on the MySQL forums from 2005,但没有比这更近的了。基于此,这是不可能的。但是3 - 4年内可以改变很多。是否有可能在MySQL中有索引视图?

我在找的是一种在视图上有一个索引但是让查看的表保持未索引的方法。编制索引会伤害编写过程,而且这个表的编写频率非常高(索引编制会减慢抓取的速度)。但是,这种索引的缺乏使我的查询非常缓慢。

+0

请参阅http://stackoverflow.com/q/7922675/632951 – Pacerier 2014-10-26 02:31:48

回答

28

我不认为MySQL支持物化视图,这是你所需要的,但它在这种情况下无法帮助你。无论索引是在视图还是在底层表上,它都需要在更新底层表的过程中在某个时刻写入和更新,因此它仍然会导致写入速度问题。

最好的办法可能是创建一个定期更新的汇总表。

+1

谢谢。我在物化视图上做了一些更多的搜索,看起来你是正确的。 – 2008-10-28 18:10:55

7

您是否考虑过从您的分析处理数据中提取您的交易处理数据,以便它们都可以专门满足其独特要求?

其基本思想是你有一个定期修改的数据版本,这将是事务处理方面,并且需要大量的规范化和轻量级索引,以便写操作更快。数据的第二版本是为分析处理而构建的,并且趋向于不太标准化,并且对于快速报告操作而言索引更大。

围绕分析处理构建的数据通常围绕数据仓库的立方体方法进行构建,由表示立方体边的事实表和表示立方体边的维表组成。

+0

这实际上是我现在正在处理的内容。我认为。我将拥有一张表,其中包含我需要的数据,这些数据是定期更新的,并且是为查询建立索引的,所以我只需要每[更长的时间单位]查询一次未索引表,以便更新索引表新数据。 – 2008-10-28 18:18:35

0

你只想要一个索引视图吗?写入只有一个索引的表格不太可能会造成破坏性。没有主键吗?

如果每条记录很大,您可以通过计算出如何缩短它来提高性能。或者缩短你需要的索引长度。

如果这是一个只写表(即你不需要更新),那么在MySQL中开始对它进行归档或者删除记录(和索引键)会致命,需要索引启动从已删除的键中填充(重新使用)插槽,而不仅仅追加新的索引值。违反直觉,但在这种情况下,你最好用更大的桌子。

2

Flexviews通过跟踪对基础表的更改并更新作为物化视图的表来支持MySQL中的物化视图。这种方法意味着视图支持的SQL有点受限制(因为更改日志记录例程必须找出它应该跟踪哪些表进行更改),但据我所知,这是最接近您可以在MySQL中实现的视图。

相关问题