我有一个表数据包数据
包包含 2 个字段 id 和总计
它们都是 bigint 长度 20 并且只有主键id
在每条记录
中自动递增总计 = id
我有 10000 条记录让我们说 id = 1 - 10000 和总计 = 1 - 10000
我得到了 2 个几乎相同的查询 1 个导致加载时间非常长,一个几乎立即完成。
加载时间非常长:
设置@i = 0;
SELECT *
FROM packet as p1
WHERE p1.total in ( SELECT p2.total
FROM 数据包为 p2 where ( ( @i := ( @i + 1 ) )
加载时间非常短:
设置@i = 0;
SELECT *
FROM packet as p1
WHERE p1.id in ( SELECT p2.id
FROM 数据包为 p2 where ( ( @i := ( @i + 1 ) )
当 id 和 total 的值相同时会发生这种情况。