我有一个有 80lacs 记录的主表(比如表 : MAIN_TABLE)我想触发许多查询,我需要在其中找到与大约 10 个条件匹配的所有记录,这些条件在 6 个月内注册(11 lacs)
我已经在 2 列(col1、col2)上创建了一个复合索引,但是查询仍然在执行大约 30-50 秒时说话时间。
此表上有大约 12 个索引和大约 60 列。当我使用 explain 时,它显示将检查 5102 行及其使用索引。
我使用的解决方案:我决定创建一个触发器,该触发器将在其中插入一个新表(MAIN_TABLE_ACTIVE),该表只有一个索引和过去 6 个月的记录和有限的列(12)当我在此表上触发查询时,结果以 2-6 秒的顺序出现。
问题:这是我使用 11lacs 表而不是 80lacs 的最佳方法吗?
缺点:三角的开销:-(
建议任何新方法或请评论我对此问题的方法。
如果您不需要实时显示数据,则可以使用另一个具有所需数据的表(类似于您使用触发器创建的表)。您可以通过一些日常 cron 填充此迷你表。
如果需要实时显示数据,则可能需要重新查看架构,因为在此表上进行实时计算不是一个好主意。
我使用了同一个表,确保我按索引顺序获取记录