我在我的名爲「cats」的mysql中有一個表,這個表有'cat_id','cat_parent','cat_name',並且我決定讓另一個名爲「cats_details 「,它有'cat_id','cat_description','cat_keywords'等,因爲我的類別可以嵌套(每個主類別可以有無限數量的子類別,每個子類別可以有無限數量的子子類別.. .. 。)和類別的數量可能會超過1000.我需要列在一些頁面:P。所以我認爲最好的辦法是有兩個表格,一個用於列出類別並搜索其名稱,另一個用於獲取有關類別的詳細信息。所以我的問題是這種情況的最佳方式是什麼?使用主鍵作爲MySQL的大表中的外鍵
1-使用「cats_details」的「cat_id」作爲自己的主鍵和「cats」表的外鍵。
2-做一個命名爲「cats_details」和「cats_details」作爲「貓」表的外鍵的另一列「CAT_ID」的主鍵「ID」(INT自動遞增)列。
對於大量的類別和大量的訪問者,這種解決方案的速度會更快嗎?
注意:我只在類別詳細信息頁面中使用JOIN,而不在列表頁面中使用JOIN。
在一篇文章中我讀過:所有表都必須有一個自動遞增主鍵,儘管當你使用它們作爲另一個表的一部分,並且外鍵必須是另一個列。 – IVIR3zaM
但您的信息我決定使用我的主鍵作爲外鍵。因爲我需要加入「貓」表本身(爲了獲得每個類別的兒童類別),所以它更好地是重量輕。你對此有何看法? – IVIR3zaM
獲取子類別:自聯接比嵌套查詢(在WHERE子句中指定連接條件)更有效。您可以使用查詢性能分析器來驗證這一點。 – fjxx