MySQL:根据条件拆分表的最快方法

时间:2015-03-23 12:33:20

标签: mysql insert cursor set-based

我有两张桌子:

1)是所有 parameter-id 的列表以及 parameter-id 所属参数集的信息

2)是包含一些 parameter-id 的数据,以及一些其他数据,如时间戳和值。

我正在设计类似数据仓库的系统。但是我没有存储预先计算的值(在我的情况下确实没有意义)的摘要表,而是尝试减少不同报告脚本必须查看的数据量以获得结果。

我想将table2中的每一行转移到每组参数的表中,以便最后我有"汇总表",每组参数一个。哪个参数属于哪个集保存在table1中。

是否有更快的方法来循环遍历table1中的每个条目,获取@param_id = ...@tablename = ...并执行INSERT INTO @tablename SELECT * FROM table2 WHERE parameter_id = @param_id?我读到了基于集合的方法"比程序方法更快(更好),但我不太了解在我的情况下会如何工作。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

不要这样做。您的第3个表将与原始的两个表一起冗余。相反,只要你需要两个表,就可以在两个表之间做JOIN

SELECT t1.foo, t2.bar
    FROM t1
    JOIN t2 ON t1.x = t2.x
    WHERE ...;