我有一個stats
表,其中記錄了每日流量並插入了約500,000條每日記錄。此表的 結構是這樣從單個選擇中插入MySQL多個
id | ip | url | date | country | referrer | type | rate | category |....
此表的規模不斷增加,我想保持它的寫操作只
我需要在這個表中的數據,結果存儲在其他表執行分析進行報告。
我打算存儲數據如下..
表stats_by_date
將不得不日期分組日常統計。
表stats_by_country
將有按國家分組的每日統計。
表stats_by_type
將具有按類型分組的日常統計信息。
表stats_by_category
將具有按類別分組的日常統計信息。
這樣,而不是500,000行只有1行將在那裏每天除了國家表,其中250行將在那裏每天。
我需要每隔半小時從主表插入這些表中的數據。 我知道我可以像
INSERT INTO `stats_by_date` (id, ip, date, rate, type)
(
SELECT id, COUNT(ip), date, rate, type FROM `stats`
WHERE date=today
GROUP BY date
);
INSERT INTO `stats_by_type` (id, ip, date, rate, type)
(
SELECT id, COUNT(ip), date, rate, type FROM `stats`
WHERE date=today
GROUP BY type
);
與多個查詢插入數據以這種方式將有至少4個INSERT
查詢將從主表中讀取同樣的數據和插入基於GROUP BY
。
我想只從主表讀取一次並插入所有其他表中。 據我所知,爲了實現這一目標,我知道我必須製作TEMPORARY TABLE
,其中我必須存儲主表中的數據,然後從此TEMPORARY TABLE
我可以執行多個INSERT
。
我想知道有沒有其他有效的方法可以做到這一點,可以在一個單獨的SELECT
中做些什麼?
請參閱並提示。
統計表(主)中的數據是每日訪問網頁,我沒有批量上傳過程,但我將使用基於時間的觸發器將數據插入彙總表。 –
@TallboY。 。 。基於時間的*事件*比每個插入的觸發器更好。 –
所以沒有辦法在單個'SELECT'中做這些'INSERTS'有些怎麼樣?可能嗎? –