mysql查询分析循环发送数据?

时间:2016-10-07 13:56:37

标签: mysql sql

我已经得到了以下查询,其中执行了大量Sending data,我无法弄清楚原因。

INSERT INTO
 Member_multi_site (
  Person_id,
  Site_id
)
SELECT
 Person_id,
 Site_id
FROM
 Members m CROSS
JOIN
 Sites s
WHERE NOT EXISTS (
 SELECT
  1
 FROM
  Member_multi_site
 WHERE
  person_id = m.person_id
 AND
  site_id = s.site_id
);

查询个人资料:

+--------------------+-----------+
| Status             | Duration  |
+--------------------+-----------+
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000009 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000010 |
| Sending data       |  0.000010 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       |  0.000010 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000009 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000009 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       |  0.000008 |
| executing          |  0.000003 |
| Sending data       |  0.000009 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000008 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000004 |
| Sending data       |  0.000007 |
| executing          |  0.000003 |
| Sending data       | 19.202793 |
| end                |  0.000028 |
| query end          |  0.004342 |
| removing tmp table |  0.000062 |
| query end          |  0.000009 |
| closing tables     |  0.000028 |
| freeing items      |  0.000049 |
| cleaning up        |  0.000036 |
+--------------------+-----------+

可能是mysql设置吗?

1 个答案:

答案 0 :(得分:0)

    You are applying cross join.
    So if in member table records are like this
    MemberId
    1
    In site table
    SiteId
    121
    122
    123
    124
    so output of cross join will be
    MemberId |SiteId
    1         121
    1         122
    1         123
    1         124
    Now you are selecting such element which are not exist in Member_multi_site
    so it will check first record present or not if not it will insert .
so data insertion is correct