在年度表中划分数据的触发器

时间:2015-09-24 11:46:29

标签: mysql variables triggers

我有一张名为“tabella”的桌子,我必须每年将这张桌子分开。 所以我每年都会重复相同的表格...比如tab_2014,tab_2015等等。

我必须在此表中触发数据副本...... 所以,如果我这样做,它的工作原理:

BEGIN
IF YEAR(NEW.data) = 2014 THEN
    INSERT INTO tab_2014 SELECT * FROM tabella WHERE id = NEW.id;
ELSEIF YEAR(NEW.data) = 2015 THEN
    INSERT INTO tab_2015 SELECT * FROM tabella WHERE id = NEW.id;
END IF;
END;

但在这种情况下,我必须每年做一个“IF”声明..

如果我这样做,它就不起作用了:

BEGIN

INSERT INTO CONCAT("tab_", YEAR(NEW.data)) SELECT * FROM tabella WHERE id = NEW.id;
END;

我该怎么办?

1 个答案:

答案 0 :(得分:0)

通常没有充分理由将数据拆分为多个表。随着表变大,MySQL为您提供了两种处理性能的好方法。

首先是使用索引。第二种是使用分区。

您没有指定哪些查询速度很慢,因此无法提出任何具体步骤。但是,几乎在所有情况下,具有相同列的多个表都是错误的解决方案。

如果您有需要改进性能的特定查询,我建议您提出另一个问题。