在MySQL中,我有一个表,其中存储了近100列和33000行数据。我正在尝试运行一个过程,该过程将根据某些条件更新表中的所有列或在表中插入新行。大概是这样的:
IF (v_Rows > 0) then
UPDATE tab1 SET
col1 = var1,
col2 = var2,
. . .
col95 = var95
WHERE id = var_id
ELSE
insert into tab1 values
(var1, var2, ... var95)
END IF;这些语句的执行时间太长。我很好奇这样的结构是如何优化的?
发布于 2017-10-19 01:33:55
请参阅
它使用唯一键来确定行是否已经存在,然后...
使用col22 = VALUES(col22)避免对已经提供的var22进行“更新”。参见。
如果要以相同的方式同时应用多个行,
INSERT INTO tbl (col1, ...)
SELECT col1, ... FROM source_tbl ...
ON DUPLICATE KEY col1 = VALUES(col1), ...;https://stackoverflow.com/questions/46805716
复制相似问题