考慮表格products
,其中包含產品詳細信息,包括其類別。一種產品可能屬於多個類別,因此我將它保留爲逗號分隔的類別ID列表。MYSQL逗號分隔的ID與單獨的表格
我知道這不是標準化的方法。
任何MYSQL專家都可以告訴我哪種方法選擇特定類別的產品會更快。
顯然我們必須加入products
表和products_category_relation
表如果採取規範化的方法。
和
在我的做法,我們必須寫一個像查詢找到所需的產品(假設我們正在尋找類別編號10)
SELECT p.*
FROM products p
WHERE p.category like '10'
OR p.category like '10,%'
OR p.category like '%,10'
OR p.category like '%,10,%'
任何一個可以告訴我,如果這種方法速度更快還是JOIN方法會更快?
我知道正常化。我瞭解我的方法中涉及的其他風險。但在我的情況下他們並不重要。所以,我關心速度。
歡迎任何有關其速度或實際測試結果的理論解釋。
UPDATE
我使用MyISAM引擎 產品表上products
表
「這也將需要更多的磁盤空間,因爲當保存爲數字通常比較昂貴」 @EmilVikstrom,我認爲對於大數字這是真的。通常類別ID不超過3個字符。 – Imdad
在這種情況下,Imdad使用'UNSIGNED SMALLINT',它使用2個字節,範圍從'0'到'65535'。 –
就目前而言,你的答案似乎比其他人好。 +1 – Imdad