我有一张保存传感器测量值的表。一行包含测量值,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 语句。 但是我不确定在我的情况下使用它是否明智,因为一段时间后可能会有很多行,并检查表中的所有行是否为随机数,以及是否与必须重新插入的行相匹配。一段时间后会造成过度杀伤力并严重影响性能?
有什么想法吗?
答案 0 :(得分:0)
使用INSERT IGNORE命令而不是INSERT命令。如果一条记录与现有记录不重复,则MySQL照常插入它。如果记录是重复的,则IGNORE关键字告诉MySQL静默丢弃它而不会产生错误。 并在“随机数”列上使用唯一的UNIQUE约束。为了在尝试从表中检索数据时提高性能,请为此创建INDEX。