我遇到以下問題。在ClickHouse,JOIN中查詢此信息的最佳方法vs重複信息
我需要記錄很多信息,而不是以多種方式進行組合和過濾。 這些信息恰巧有這樣的步驟,讓我們想象它有4個步驟,其中每一步添加更多信息到上一步。
目前,我有4個表格,每一步的每一步,每一步的所有信息和前一個。
所以一個例子是。
第一步(TRANSACTION_ID,日期,COUNTRY_ID,DEVICE_ID,browser_id,IP,LANGUAGE_ID,target_id等) - > 40kk記錄
第二步(TRANSACTION_ID,日期,COUNTRY_ID,DEVICE_ID,browser_id,IP,LANGUAGE_ID,target_id, step2_date,step2_ip等) - > 35kk記錄
第三步(TRANSACTION_ID,日期,COUNTRY_ID,DEVICE_ID,browser_id,IP,LANGUAGE_ID,target_id,step2_date,step2_ip,step3_date,step3_ip,TIME_TAKEN等) - > 5KK記錄
Step4(transaction_id,date,country_id,device_id,browser_id,ip,language_id,target_id,step 2_date,step2_ip,step3_date,step3_ip,time_taken,step4_date,step4_ip,final_value等) - > 1kk記錄
正如您在示例中看到的,每個步驟都包含所有以前的數據和新的字段。
理想的做法是先將所有初始數據(當前大約有50個字段)和其他步驟與每個步驟的附加數據進行第一步,然後通過transaction_id加入JOIN並能夠GROUP和過濾。
我試過這種方法,但是因爲它必須對每個條目進行迭代才能匹配其他步驟中的事務,所以它看起來不太理想。 (查詢時間大約需要3秒,而另一方面需要大約0.1秒)
另一方面,擁有每個表中所有可用信息,允許我過濾UNION或JOIN之前的數據,這是相當快,但我需要在每一步複製數據..
我需要從4個步驟查詢一個SELECT,這將告訴我例如一個特定的日期和device_id和group_ country_id多少個step1,步驟2,步驟3,步驟4以及每個步驟可能具有的其他標誌。
因此,問題是如果有其他方法來加快步驟之間的關係,以避免在每個步驟中重複信息並保持速度? 也許一種方法來索引transaction_id(這是唯一的,並在第一步中生成)
讓我們考慮一下step1表會每天接收約100kk的記錄,而另一個則獲得儘可能多的信息。
謝謝。