【问题标题】:Finding Duplicates Of Table data : Optimized Way?查找表数据的重复:优化方式?
【发布时间】:2012-09-25 19:36:09
【问题描述】:

我有一个包含 80lacs 记录的主表(比如 TABLE : MAIN_TABLE) 我想触发许多查询,在这些查询中我需要找到与 6 个月内注册的大约 10 个条件匹配的所有记录(11 lacs)

我已经在 2 列 (col1, col2) 上创建了一个复合索引,但是查询仍然在执行大约 30-50 秒的通话时间。

此表上有大约 12 个索引和大约 60 列。 当我使用 explain 时,它显示将检查 5102 行及其使用索引。

我使用的解决方案:我决定创建一个触发器,它将插入一个新表(MAIN_TABLE_ACTIVE),其中只有一个索引和最近 6 个月的记录和有限的列(12) 当我对此表进行查询时,结果将按 2-6 秒的顺序出现。

问题:这是我使用 11lacs 表而不是 80lacs 表的最佳方法吗?

缺点:触发器的开销:-(

建议任何新方法或请评论我解决此问题的方法。

【问题讨论】:

    标签: mysql database mysql5


    【解决方案1】:

    如果您不需要实时显示数据,您可以使用另一个包含所需数据的表(类似于您使用触发器创建的表)。您可以通过一些每日 cron 填充此迷你表。

    如果您需要实时显示数据,那么您可能需要重新查看您的架构,因为在此表上进行实时计算并不是一个好主意。

    【讨论】:

    • 由于我的要求,我不能使用 cron。如果我想要实时数据有什么问题?
    • 您不认为触发器会影响您的写入性能吗?
    • 我想只在slave上而不是master上写一个触发器
    • 那么我认为你不会有任何问题。
    • 有没有更好的办法?
    【解决方案2】:

    我使用了同一张表,确保按索引顺序获取记录

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多