我想找出處理插入/更新/刪除大型列表的最佳方式。我應該如何在mysql中插入/更新/刪除大型列表?
具體來說,我的用戶需要選擇產品的大名單,他們每天晚上都將獲得這些項目的報告。
過於簡單化了,這裏是數據模型(一個簡單的多對多)
~ 5000 records total
+----------+------------+
| user_id | user_name |
+----------+------------+
| 1 | Ralph |
| 2 | Bill |
| 3 | Joe |
| 4 | Mike |
| 5 | Brian |
| 6 | Jose |
+----------+------------+
~ 6000 records total
+------------+------------+
| product_id | product |
+------------+------------+
| 1 | Widget A |
| 2 | Widget B |
| 3 | Widget C |
| 4 | Widget D |
| 5 | Widget E |
| 6 | Widget F |
+------------+------------+
As many as 30 million total
+----------+------------+
| user_id | product_id |
+----------+------------+
| 1 | 1 |
| 1 | 4 |
| 1 | 6 |
| 2 | 2 |
| 2 | 4 |
| 2 | 5 |
+----------+------------+
的問題是,該產品在批量選擇,所以如果用戶點擊選擇所有(這是他們經常做的),他們正在選擇大約6000個產品,這相當於一個大的插入查詢。
而且,他們可以更新和刪除基於一串不同的標準,這些列表,如哪些類別,他們下跌,價位等
他們要更新他們的名單我每次都要檢索他們選擇的產品,刪除他們已取消選擇的產品,然後插入任何新產品。
的過程充其量似乎很麻煩,我想知道是否有更好的解決方案。
我考慮的,而不是存儲在用戶需要的產品,只存儲產品的用戶不希望因此限制了頻繁的大插入/更新查詢的開銷。 這樣,每個用戶默認都可以獲得每種產品。
與解決方案的問題是,當新項目到達用戶可能不希望在報告中這些項目所以後來我就必須保持一個單獨的表,規定什麼樣的默認項。
非常感謝誰能幫助我。
編輯:只是爲了澄清,該用戶不僅限於選擇標準。他們也可以直接選擇產品和產品組。用戶是獨一無二的,因爲他們都非常熟悉產品(大部分知道幾乎所有6000種產品)。
這需要使用動態SQL來使用選擇條件,並且在產品/ etc被添加到該限制內時會有風險。如果客戶購買特定產品,還會報告*非常*痛苦檢索... – 2010-09-02 04:53:01
我會考慮這種方法,但用戶選擇不僅僅基於標準。他們也可以通過產品ID選擇單個產品。 – 2010-09-02 05:44:10
您的標準之一可以是「productId =」。你只是在賭用戶只選擇幾種產品,並非全部都是6000. – 2010-09-02 06:34:55