小编And*_*ith的帖子

在Self上使用IN子查询优化Update查询

我有一个80000行数据库,结果编号在130000000和168000000之间,结果使用字段pid配对。我需要将行的状态从“ G”更改为“ X”,结果对之间的差值为4300000。

我想出了下面的查询,该查询可以运行,但是速度很慢,可以提高速度吗?

UPDATE table1 SET status = 'X'
WHERE id IN (
SELECT id FROM (
    SELECT a.id AS id FROM table1 a, table1 b
    WHERE a.result = b.result + 4300000
    AND a.pid = b.pid
    AND a.result between 130000000 and 168000000
    AND a.status = 'G'
    ) AS c
);
Run Code Online (Sandbox Code Playgroud)

索引是:

table1  0   PRIMARY 1   id  A   80233   NULL    NULL        BTREE
table1  1   id  1       id  A   80233   NULL    NULL        BTREE
table1  1   id  2   result  A   80233   NULL …
Run Code Online (Sandbox Code Playgroud)

mysql sql

2
推荐指数
1
解决办法
61
查看次数

标签 统计

mysql ×1

sql ×1