0

我有 2 张桌子。

  1. VoiceZone1: 它包含 4 列(Uname, TID, Res_Msg, Req_Time)
  2. VoiceZone2: 它还包含 (Uname, TID, Res_Msg, Req_Time)

有另一张桌子VoiceZoneLog

想要复制 to 表的所有列VoiceZone1和两VoiceZoneLog列,Res_Msg表。Req_TimeVoiceZone2VoiceZoneLog

请指导我使用 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'

所以它执行正确,但我的任务是优化它。我想要任何其他方式。所以请指导我。

4

1 回答 1

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)`。

于 2013-08-29T11:06:49.290 回答