【发布时间】:2014-02-14 11:09:41
【问题描述】:
我有两张相同的桌子。我想比较这两个表并从中获取结果。条件是:
TABLE1 中按 TID 分组的每条记录将与 TABLE2 中按其每个 TID 分组的所有记录进行比较。
如果要在 TABLE2 中发现 TABLE1 中的每个 分组 记录(TABLE2 中也按每个 tid 分组的记录),则多达 N(N 是用户输入变量) ,然后该记录将被插入到新表中。
例如像下面的ss,ITEM C-F-A按TID 2分组在table2中出现了3次,因此它们将被插入到新表中:
我已经尝试为此编写代码并且它可以工作(vb.net),但是编译器需要很长时间才能完成。主要原因是我正在处理一个庞大的数据库。
我在程序中完成的方法是将两个表填充到二维数组中。在将两个元素与if clause 进行比较时为数组赋值。
下面是我创建的二维数组:
但是这种方法真的很贵,我上面图片上的真实数据库是第一个二维数组有 2k 条记录,第二个二维数组有 800 条记录,当我尝试计算编译到的估计时间时完成后,它显示了一个惊人的数字,大约 16 小时.. 天哪!!
所以我想知道,这个问题是否可以用mysql查询来解决, 或其他比我做的更有效的方法?
【问题讨论】:
-
您到底想达到什么目的?你只是想镜像表格吗?这些是在同一个数据库中还是在不同的数据库中?
-
它在同一个数据库中.. 两个具有相同字段的相同表。我想要实现的是在 TABLE1 中选择 以 TID 作为标识符的记录分组,这在 TABLE2 中有一定的出现次数。简而言之,TABLE1 中按 TID 分组的每条记录都会检查它们在 TABLE2 中的频率。如果达到一定数量的频率,则将 TABLE1 中的分组记录插入到新表中
-
@GrandmasterB 他想做一个合并操作,但我不知道 MySQL,所以我不能说天气它有这样的功能或如何完成。此外,他还想基于复杂的聚合进行合并操作,这使得它更不可能成为集合操作,这可能必须相对强制地使用插页式表格来完成
-
啊,我明白了。所以基本上,对于表 1 中的每个组 id,如果表 2 中存在相同组 id 高于某个指定计数的行,则将这些行添加到表 1。实际应用程序可能正在等待车辆装满足够的乘客或包裹,然后再发送。
标签: mysql performance compare