使用MySQL的INSERT IGNORE防止重复输入(性能问题?)

时间:2019-02-18 04:56:14

标签: mysql database

我有一张保存传感器测量值的表。一行包含测量值,id(pk和自动增量)和一个随机数= num(大约10位或更长)。

CREATE TABLE `table` (
    `id` int(10) UNSIGNED NOT NULL,
    `value` float NOT NULL,
    `num` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

现在几周/几个月后,该表可能包含成千上万的行。

我的问题 : 我的系统要求随机数是唯一的(两个或多个具有相同随机数的测量/行是不可接受的)。 现在,我已经进行了一些研究,并且有整洁的 INSERT IGNORE 语句。 但是我不确定在我的情况下使用它是否明智,因为一段时间后可能会有很多行,并检查表中的所有行是否为随机数,以及是否与必须重新插入的行相匹配。一段时间后会造成过度杀伤力并严重影响性能?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用INSERT IGNORE命令而不是INSERT命令。如果一条记录与现有记录不重复,则MySQL照常插入它。如果记录是重复的,则IGNORE关键字告诉MySQL静默丢弃它而不会产生错误。 并在“随机数”列上使用唯一的UNIQUE约束。为了在尝试从表中检索数据时提高性能,请为此创建INDEX。

https://www.w3schools.com/sql/sql_create_index.asp