2015-12-05 60 views
2

表中有一列作爲category_NAME/ID,我們可以在其中傳遞id,併爲該類別的列表創建另一個表或直接添加類別名稱。在mysql字符串搜索或整數與join語句的組合中,哪個更快?

哪一個是fater

案例1:

TABLE1

ID | CATEGORY_NAME 

CASE 2

這裏獲取列表中,我們有一個做陳述JOIN

TABLE1

ID | CATEGORY_ID 

CATEGORY_TABLE

ID | CATEGORY NAME 
+0

您的測試結果如何?您需要考慮數據庫和相關代碼的可維護性,例如,如果類別名稱被更改,會有多少麻煩? –

回答

1

是什麼 CASE 1之間的區別: TABLE1

ID | CATEGORY_NAME 

CASE 2

這裏獲取列表,我們做一個JOIN語句

TABLE1

ID | CATEGORY_ID 

CATEGORY_TABLE

ID | CATEGORY NAME 

我想你的意思是第一種情況是Item_id。

在這種情況下,它取決於代碼的可維護性和存儲。就好像類別名稱已更改一樣,您必須更新大表中的記錄,這將是大量查詢。 另外,由於您正在存儲category_id而不是其名稱,因此將有助於節省存儲空間。由於您不是複製每個記錄的類別名稱,而只是引用category_id。

但顯然它取決於項目的類別和大小的大小。

1

如果TABLE1規模是相當小的(比方說小於10K行最大),索引VARCHAR CATEGORY_NAME應該工作正常,否則最好使用一個單獨的表,用於存儲類別。

就我個人而言,我會選擇2.在這裏的性能改進不會如此顯着,但將字典字段存儲在另一個表中是一種不好的做法。

相關問題