0

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

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

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

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

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

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

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

4

2 回答 2

0

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

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

于 2012-10-04T17:54:06.863 回答
0

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

于 2012-10-05T19:37:44.137 回答