【问题标题】:Using MySQL views to increase performance使用 MySQL 视图来提高性能
【发布时间】:2011-08-23 16:01:15
【问题描述】:

假设我有一个带有deleted 字段的products 表。当产品被删除时,我只是将deleted 设置为1,而不是删除实际记录。这样,我将拥有大量日常使用中不需要的数据。创建一个仅显示未删除产品的视图并查询此视图而不是 products 表会提高我的应用程序的性能吗?

【问题讨论】:

  • 只是一个想法:为什么不创建已删除的表并在每次删除时将产品从主表移动到已删除的表?所以你的主表只有活跃的产品。

标签: mysql view


【解决方案1】:

使用视图不会显着提高性能。
但是,由于视图的语法是固定的,它会在第一次选择后缓存查询结果。

但是查询的结果不再被索引,所以如果视图选择了很多行并且您对视图进行选择,您实际上可能会减慢速度。

替代方案
另一种方法可能是将已删除的产品行移动到单独的 deleted_products 表中。
或者您可以将表划分为deletedundeleted 部分。

链接:
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html

【讨论】:

    【解决方案2】:

    不太可能。无论如何,视图都会查询您的表。

    但是,它可以使您的应用程序的开发更容易一些。

    【讨论】:

      【解决方案3】:

      您正在描述执行软删除并询问针对给定表的 SELECT 的性能。我同意其他发帖者的观点,即您在 SELECT 上的性能提升将是最小的,但是对于您的整个系统而言,这种策略可能会更好,因为 DELETE 很昂贵。如果您要进行大量删除,进行软删除,那么定期清理将提高整体性能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-27
        • 1970-01-01
        • 1970-01-01
        • 2020-08-16
        • 1970-01-01
        • 2016-10-07
        • 2012-04-11
        相关资源
        最近更新 更多