我有2张桌子。
VoiceZone1
:它包含4列(Uname,TID,Res_Msg,Req_Time)VoiceZone2
:它还包含(Uname,TID,Res_Msg,Req_Time)拥有另一张表VoiceZoneLog
。
要将VoiceZone1
的所有列和VoiceZoneLog
以及Res_Msg
Req_Time
的两列VoiceZone2
复制到VoiceZoneLog
表。
请使用sql / mysql指导我。
查看我的查询:
INSERT INTO VoiceZoneLog
SELECT A.REQ_TIME,
B.RES_TIME,
A.USER_NAME,
A.TID,
A.REQ_MSG,
B.RES_MSG
FROM VoiceZone1 A,
VoiceZone2 B
WHERE A.TID=B.TID AND
A.REQ_MSG='CALL_LOGS_HISTORY 14'
所以它正确执行但我的任务是想要优化它。 我想要任何其他方式。所以请指导我。
答案 0 :(得分:3)
您的查询没问题,但使用标准联接语法并列出insert
的列会更好:
INSERT INTO VOICEZONE_LOGS (REQ_TIME, RES_TIME, USER_NAME, TID, REQ_MSG_A, REQ_MSG_B)
SELECT A.REQ_TIME, B.RES_TIME, A.USER_NAME, A.TID, A.REQ_MSG, B.RES_MSG
FROM VZ_LOGS_REQ A join
VZ_LOGS_RESP B
ON A.TID = B.TID
WHERE A.REQ_MSG='CALL_LOGS_HISTORY 14';
(插入时列名可能有误,我猜对了。)
您可以通过索引来提高性能。我建议:vz_logs_req(req_msg, tid)
和vs_logs_resp(tid)`。