代码之家  ›  专栏  ›  技术社区  ›  Capitaine

创建物化视图或新表哪个更好?

  •  2
  • Capitaine  · 技术社区  · 16 年前

    我有一些 要求高的 必须选择相同的MySQL查询 经常更新的数据集 5-7 MySQL表。select'操作会比cud多一些。

    我正在考虑创建一个表或物化视图,从其他表中收集所有需要的列,以便 将总查询时间减少到不同的表 从而提高性能。

    如果创建该表,则每次更新其他表时,可能需要执行额外的插入/更新/删除操作。

    如果我创建物化视图,我担心性能是否可以大大提高。因为其他表中的数据变化非常频繁。最有可能的是,在选择视图之前,每次都需要先创建视图。

    有什么想法吗?例如,如何缓存?我能做的其他额外措施?

    3 回复  |  直到 12 年前
        1
  •  0
  •   leonbloy    16 年前

    在我看来,你在考虑 materialized view “概念。

    尽管MySQL可以用一些 more less 复杂度(我做了一些类似于PostgreSQL中后期的事情——它对于报表中经常使用的复杂的非参数化查询很方便,并且对于这些查询来说,不完全拥有最新数据是可以容忍的)。

        2
  •  2
  •   zerkms    16 年前

    我正在考虑创建一个表或视图,从其他表中收集所有要求严格的列,以提高性能。
    最有可能的是,在选择视图之前,每次都需要先创建视图。

    视图只不过是查询。因此,无论是从视图中进行查询选择,还是只执行普通的SQL,性能都是一样的。

    如何缓存

    缓存是一个非常复杂和具体的问题。所以没有灵丹妙药,要做出决定,还需要提供更多的细节。

        3
  •  0
  •   Michael Mior Aouidane Med Amine    12 年前

    如下文所述,没有提高性能的灵丹妙药。与上面所说的不同,指数是 对于数据库性能来说,最重要的是正确设置数据库。随着数据库变得越来越大,数据库配置可以控制性能。其中最重要的是拥有一个适当配置的磁盘子系统,因为大型数据库的性能总是受到数据在磁盘之间传输速度的限制。

    对于您的特定问题,通过查询来伪造物化视图可能会帮助您,也可能不会帮助您。它可能会降低插入和更新性能,同时可能提高选择性能。在需要时根据需要创建“视图”,对您来说毫无用处,因为您无论如何都必须运行缓慢的查询来创建它。由于MySQL不直接支持物化视图,标准视图对您没有任何帮助。

    没有更多的细节,更好的帮助是不可能的。