我需要知道哪種數據庫模型對性能更好。用於MYSQL產品特性的電子商務數據庫結構(innoDB)
首先數據庫模型
三表。功能,產品,功能值。
功能表
+----+-----------+
| id | name |
+----+-----------+
| 1 | Brand |
| 2 | Color |
| 3 | Dimension |
| 4 | Model |
+----+-----------+
和特徵值表
+----+---------+------------+
| id | name | feature_id |
+----+---------+------------+
| 1 | Sony | 1 |
| 2 | Samsung | 1 |
| 3 | Red | 2 |
| 4 | Blue | 2 |
| 5 | 20 " | 3 |
| 6 | 30 " | 3 |
| 7 | Model A | 4 |
| 8 | Model B | 4 |
+----+---------+------------+
和產品表。
+----+--------------------+----------+
| id | product_name | features |
+----+--------------------+----------+
| 1 | Sony Television | 1-3-5-7 |
| 2 | Samsung Television | 2-4-6-8 |
+----+--------------------+----------+
正如你在這個結構中看到,如果用戶想根據功能搜索產品,我需要在我的查詢中使用REGEXP或全文搜索。
二數據庫模型
在第二個數據庫模型,我會刪除產品表的功能,我會添加新的表稱爲product_features。
+----+--------------------+
| id | product_name |
+----+--------------------+
| 1 | Sony Television |
| 2 | Samsung Television |
+----+--------------------+
和新表product_features;
+----+------------+------------+
| id | feature_id | product_id |
+----+------------+------------+
| 1 | 1 | 1 |
| 2 | 3 | 1 |
| 3 | 5 | 1 |
| 4 | 7 | 1 |
| 5 | 2 | 2 |
| 6 | 4 | 2 |
| 7 | 6 | 2 |
| 8 | 8 | 2 |
+----+------------+------------+
現在,如果用戶想根據功能搜索產品,我需要搜索product_features然後加入產品。
問題
我的問題是,如果我使用第二種模式,我有在產品表20十億行,並認爲至少有10種功能的每一個產品,所以product_features表將有超過200億行。根據功能查詢也許會很慢。
如果我使用第一個模型,當用戶根據要素進行搜索時,我必須用全文搜索或REGEXP以20億行查詢。
我不知道哪種方式更好?你有什麼建議?
謝謝您的回答。是的第一個模型不是1NF形式,但是第二個模型的性能如何。如果我在產品中有20億個行,並且認爲每個產品至少有10個功能,那麼product_features表就會有200多億行。 – 2014-10-31 06:54:04
什麼是您的搜索參數和預期輸出是什麼,那麼我將能夠更好地爲您提供幫助。 – 2014-10-31 06:55:53
我只需要知道這兩個模型之間對於大型數據集的性能。當用戶想要根據功能查找產品時,產品表中有20億個行,哪種模式可以更快地獲得結果。 – 2014-10-31 07:05:13