2

SETUP - 我有一个大而简单的查询,通常需要一两秒才能运行

SELECT DISTINCT t1.Col_1, t1.Col_2, t1.Col_3, Col_4, ... t2.Col_3, t3.Col_2, ...
    (14 columns total)
FROM Table_1 t1 INNER JOIN Table_2 t2 ON (t1.COL_3 = t2.COL_1) ... 
    (4 joins total, each on a different column in Table_1)

Table_1 是主表,它的 Col_1 是整个数据库的主键(所有其他表只是在 Table_1 中的列之外有一个外键。)

问题- 如果我只在 t1.Col_2 和 t1.Col_4 上,我需要找到最大可能的计数。例如,对于表 1 的第 2 列和第 4 列中的现有值组合,如果我根据这些组合中的任何一个进行选择,我将获得的最大结果集是多少?就规模而言,两列有超过 200,000 种独特的组合。

我试图通过收集 COL_2 和 COL_4 的所有组合来避免该问题,然后使用这些组合查询计数,但测试 ~2,500 需要 30 分钟。那太慢了。

我不想回答的问题:

  • 存在多少 Col_2 和 Col_4 的唯一组合。例子另一个例子
  • 相同问题的小规模版本。就是其中的一些。

MY BEST GUESS - 从类似问题的一些排名较低的答案中工作,我认为

SELECT t1.Col_2, t1.Col_4, COUNT(DISTINCT t1.Col_1) AS total 
FROM TABLE_1 t1 INNER JOIN Table_2 t2 ...
GROUP BY t1.Col_2, t1.Col_4
ORDER BY COUNT(DISTINCT t1.Col_1) DESC //not necessary but useful for trying to analzye the results

应该给我我正在寻找的东西,但我的不确定性足够高,足以证明将其放在问题中而不是作为自我答案发布。

4

0 回答 0