在mysql中高效地更新一个包含10k条记录的表

wkftcu5l  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(205)

我有两张table,a桌和b桌。表a有10k记录。表b有10万条旧记录和附加记录。我需要更新表b中旧的10公里记录。
我用过,

UPDATE CONTENT_WORKFLOW_MASTER CWM, CWSCOPY TMP SET
CWM.PROGRAM_ID = TMP.PROGRAM_ID,
CWM.PROGRAM_TYPE_ID = TMP.PROGRAM_TYPE_ID, 
CWM.PROGRAM_TYPE_NAME = TMP.PROGRAM_TYPE_NAME, 
CWM.ORIGINAL_TITLE = TMP.ORIGINAL_TITLE, 
CWM.SOURCE_GROUP_ID = TMP.SOURCE_GROUP_ID, 
CWM.MASTER_TITLE = TMP.MASTER_TITLE, 
CWM.PROGRAM_LANGUAGE = TMP.PROGRAM_LANGUAGE, 
CWM.REGION = TMP.REGION, 
CWM.CW_STATUS = 'NEW', 
CWM.COPY_CULTURE = TMP.COPY_CULTURE, 
CWM.GENRES = TMP.GENRES, 
CWM.AIR_DATE_TIME = TMP.AIR_DATE_TIME, 
CWM.PROCESS_ID = TMP.GUID, 
CWM.PRIORITY = 0, 
CWM.UPDATED_BY_SCHEDULE = 1, 
CWM.MODIFIED_USER = 'StoredProcUser', 
CWM.MODIFIED_DATE = NOW() WHERE CWM.PROGRAM_ID = TMP.PROGRAM_ID ;

我曾经,

UPDATE CONTENT_WORKFLOW_MASTER CWM INNER JOIN t.temp TMP 
USING (PROGRAM_ID) 
SET 
CWM.PROGRAM_ID = TMP.PROGRAM_ID,
CWM.PROGRAM_TYPE_ID = TMP.PROGRAM_TYPE_ID, 
CWM.PROGRAM_TYPE_NAME = TMP.PROGRAM_TYPE_NAME, 
CWM.ORIGINAL_TITLE = TMP.ORIGINAL_TITLE, 
CWM.SOURCE_GROUP_ID = TMP.SOURCE_GROUP_ID, 
CWM.MASTER_TITLE = TMP.MASTER_TITLE, 
CWM.PROGRAM_LANGUAGE = TMP.PROGRAM_LANGUAGE, 
CWM.REGION = TMP.REGION, 
CWM.CW_STATUS = 'NEW', 
CWM.COPY_CULTURE = TMP.COPY_CULTURE, 
CWM.GENRES = TMP.GENRES, 
CWM.AIR_DATE_TIME = TMP.AIR_DATE_TIME, 
CWM.PROCESS_ID = TMP.GUID, 
CWM.PRIORITY = 0, 
CWM.UPDATED_BY_SCHEDULE = 1, 
CWM.MODIFIED_USER = 'StoredProcUser', 
CWM.MODIFIED_DATE = NOW() WHERE CWM.USER_LOCKED=0;

create TEMPORARY table t.temp AS
SELECT DISTINCT CWS.CONTENT_WORKFLOW_STAGING_ID,CWS.PROGRAM_ID,CWS.SOURCE_GROUP_NAME,CWS.COPY_CULTURE,
CWS.PROGRAM_TYPE_ID,  CWS.PROGRAM_TYPE_NAME, CWS.ORIGINAL_TITLE, CWS.SOURCE_GROUP_ID, CWS.MASTER_TITLE, 
CWS.PROGRAM_LANGUAGE, CWS.REGION, CWS.GENRES, CWS.AIR_DATE_TIME, CWS.GUID,CWS.IS_PROCESSED, CWS.INTERNAL_TRANSACTION_ID 
FROM CONTENT_WORKFLOW_STAGING CWS INNER JOIN CONTENT_WORKFLOW_MASTER CWM ON
CWM.PROGRAM_ID = CWS.PROGRAM_ID AND 
CWM.SOURCE_GROUP_NAME = CWS.SOURCE_GROUP_NAME AND CWM.COPY_CULTURE = CWS.COPY_CULTURE AND CWM.USER_LOCKED = 0 
AND 
CWS.IS_PROCESSED = 0 AND CWS.INTERNAL_TRANSACTION_ID = INTERNAL_TRANSACTION_ID;

两个查询都不是完全有效的。有谁能提出有效的解决办法吗。至少10秒内。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题