大规模计算两个其他列的所有组合

时间:2015-10-29 20:31:35

标签: sql count scalable timesten

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

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分钟。那太慢了。

我不想回答的问题:

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

应该给我一些我正在寻找的东西,但是我的不确定性足以证明将其置于问题中而不是张贴为自我答案。

0 个答案:

没有答案