嵌套选择加载时间在MySQL
题
我有一个表的数据包,点击 包包含2场ID和总点击 它们都是BIGINT长度20和主键,点击 唯一ID是自动递增结果 每个记录中总= ID结果 我得到了10000条记录假设ID = 1 - 10000,总= 1 - 10000次点击
我得到2所几乎相同的查询1所导致非常非常长的加载时间和一个几乎瞬间完成。
非常非常长的装载时间:
set @i = 0;
SELECT *
FROM packets as p1
WHERE p1.total in ( SELECT p2.total
FROM packets as p2 where ( ( @i := ( @i + 1 ) )
非常短的装载时间:
set @i = 0;
SELECT *
FROM packets as p1
WHERE p1.id in ( SELECT p2.id
FROM packets as p2 where ( ( @i := ( @i + 1 ) )
发生这种情况,而ID和总的值是相同的。
解决方案
它们都是BIGINT长度20和主键
您不能有两个主键在一个表中。
看来你没有对packets.total
指数
创建它,看看它是否有助于:
CREATE INDEX ix_packets_total ON packets (total)
不隶属于 StackOverflow