Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将此查询拆分为批_Mysql_Sql - Fatal编程技术网

Mysql 将此查询拆分为批

Mysql 将此查询拆分为批,mysql,sql,Mysql,Sql,我有一个MySQL表contacts,其结构如下 +--------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+----------+------+-----+---------+----------------+ | id | int(

我有一个MySQL表contacts,其结构如下

+--------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | contactee_id | int(11) | NO | MUL | 0 | | | contacter_id | int(11) | NO | MUL | 0 | | +--------------+----------+------+-----+---------+----------------+ +--------------+----------+------+-----+---------+----------------+ |字段|类型|空|键|默认|额外| +--------------+----------+------+-----+---------+----------------+ |id | int(11)| NO | PRI | NULL |自动增量| |联系人id国际(11)编号MUL 0| |接触器识别号int(11)编号MUL 0| +--------------+----------+------+-----+---------+----------------+ 联系人id和联系人id都是id,共同定义了两个用户之间的关系。为了计算关系的计数,用户有,我有以下查询

INSERT INTO followers (id, followers) SELECT contactee_id, 1 FROM contacts ON DUPLICATE KEY UPDATE followers = followers + 1 插入追随者(id,追随者) 选择联系人id,1 来自联系人 关于重复密钥 更新关注者=关注者+1
此查询的问题是它锁定联系人表的时间太长(超过16分钟)。我想分批完成,这样SQL就不会长时间锁定contacts表。我想有几种方法,但它们都需要锁定整个桌子。有什么方法可以做到这一点吗?

如果您只想计算关系的数量,请将计数和分组方式一起使用,如

SELECT contactee_id,count(contacter_id) FROM contacts group by contactee_id;

这将为您提供所有联系人id和每个联系人的联系人id数量

运行一些记录的查询,然后将最后一条记录的id保存在表或文件系统中,从该id开始下一次查询,并每个周期更新一次。

您的联系人包含多少行?有多少追随者?您能发布插入的执行计划吗?Contacts表包含约30m行。分组也会锁定该表。