我有一个表的数据包,点击 包包含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)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top