cru*_*zja 5 mysql sql performance inner-join
我有一个大表(TokenFrequency),其中有数百万行.TokenFrequency表的结构如下:
表 - TokenFrequency
我的目标是选择其中两个源具有相同令牌的所有行.例如,如果我的表看起来像这样:
id --- source --- token --- count
1 ------ 1 --------- dog ------- 1
2 ------ 2 --- ------猫-------- 2
3 ------ 3 ---------猫-------- 2
4 ------ 4 ---------猪-------- 5
5 ------ 5 ---------动物园------- 1
6 --- --- 5 --------- cat -------- 1
7 ------ 5 ---------猪-------- 1
我想要一个SQL查询给我源1,源2和计数的总和.例如:
source1 --- source2 --- token --- count
---- 2 ----------- 3 --------- cat -------- 4
- --- 2 ----------- 5 --------- cat -------- 3
---- 3 ---------- - 5 --------- cat -------- 3
---- 4 ----------- 5 ---------猪 - ------ 6
我有一个看起来像这样的查询:
SELECT F.source AS source1, S.source AS source2, F.token,
(F.count + S.count) AS sum
FROM TokenFrequency F
INNER JOIN TokenFrequency S ON F.token = S.token
WHERE F.source <> S.source
Run Code Online (Sandbox Code Playgroud)
这个查询工作正常,但我遇到的问题是:
我遇到的主要问题是使用当前查询查询的速度需要几个小时才能完成.桌子上的INNER JOIN就是我认为的问题.我确定必须有一种方法来消除内连接,并使用TokenFrequency表的一个实例获得类似的结果.我提到的第二个问题也可能会促进查询的速度提升.
我需要一种方法来重构此查询,以更快,更有效的方式提供相同的结果.
谢谢.