我有一个80lacs记录的主表(比如TABLE:MAIN_TABLE) 我想解决许多查询,我需要查找所有符合约10个标准的记录,这些记录在6个月内注册(11 lacs)
我在2列(col1,col2)上创建了一个复合索引,但是仍然查询是在执行大约30-50秒的时间。
此表上有大约12个索引,大约有60个列。 当我使用explain时,它会显示将检查5102行及其使用索引。
我使用的解决方案:我决定创建一个触发器,它将插入一个新表(MAIN_TABLE_ACTIVE),只有一个索引和最近6个月的记录和有限的列(12) 当我在这个表上发出查询结果时,结果是2-6秒。
问题:这是最好的方法,因为我使用的是11lacs而不是80lacs的表吗?
缺点:触发器的开销: - (
建议任何新的方法或请评论我对此问题的处理方法。
答案 0 :(得分:0)
如果您不需要实时显示数据,可以使用另一个具有所需数据的表(类似于您使用触发器创建的表)。您可以通过一些每日cron填充此迷你表。
如果您需要实时显示数据,则可能需要重新查看模式,因为此表上的实时计算不是一个好主意。
答案 1 :(得分:0)
我使用了相同的表,确保我按照索引
的顺序获取记录