设置 - 我有一个大而简单的查询,通常需要一两秒才能运行
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
应该给我一些我正在寻找的东西,但是我的不确定性足以证明将其置于问题中而不是张贴为自我答案。